mirror of
https://github.com/darlinghq/darling-curl.git
synced 2024-11-23 03:09:43 +00:00
curl-118
This commit is contained in:
parent
051b78f3ee
commit
6768fac474
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
*~
|
||||
build/
|
||||
.DS_Store
|
||||
*.xcodeproj/*.mode*
|
||||
*.xcodeproj/*.pbxuser
|
||||
*.xcodeproj/*.perspectivev3
|
||||
*.xcodeproj/project.xcworkspace
|
||||
*.xcodeproj/xcuserdata
|
||||
*.xcodeproj/xcshareddata
|
21
README.APPLE
21
README.APPLE
@ -1,4 +1,4 @@
|
||||
The 'curl' subdirectory is based on curl 7.43.0
|
||||
The 'curl' subdirectory is based on curl 7.64.1
|
||||
|
||||
== Updating ==
|
||||
|
||||
@ -18,17 +18,20 @@ Might be able to process the Makefile.inc files into Xcode file lists at some po
|
||||
|
||||
Make sure all man pages and headers are being installed.
|
||||
|
||||
Update xcscripts/install_libtest.sh (see comment at top)
|
||||
Update xcscripts/install_libtest.sh (see comment at top) -- NOTE: This hasn't been updated in quite some time, see radar:17812072
|
||||
|
||||
== Configuration ==
|
||||
|
||||
./configure --with-gssapi --enable-hidden-symbols --disable-static --enable-threaded-resolver --with-darwinssl --without-libssh2
|
||||
macOS:
|
||||
SDKROOT=macosx.internal ./configure --enable-hidden-symbols --enable-threaded-resolver --with-gssapi --with-ssl=/usr/local/libressl
|
||||
|
||||
Changes to include/curl/curlbuild.h post-configure:
|
||||
(1) Add #ifdef __LP64__ for CURL_SIZEOF_LONG.
|
||||
(2) Change CURL_TYPEOF_CURL_OFF_T and associated defines to int64_t (configure gets it wrong for 32-bit).
|
||||
(requires CURL_PULL_STDINT_H, CURL_PULL_INTTYPES_H)
|
||||
iOS (etc):
|
||||
SDKROOT=macosx.internal ./configure --enable-hidden-symbols --enable-threaded-resolver --disable-ldap --with-darwinssl
|
||||
|
||||
Changes to lib/curl_config.h post-configure:
|
||||
Changes to curl_config.h post-configure:
|
||||
(1) Add #ifdef __LP64__ for SIZEOF_LONG, SIZEOF_SIZE_T, SIZEOF_TIME_T, SIZEOF_VOIDP
|
||||
(2) #undef HAVE_GSSAPI, OS - conditionally defined in common.xcconfig
|
||||
(2) #undef OS - conditionally defined in common.xcconfig
|
||||
(3) [iOS only] #undef CURL_CA_BUNDLE - causes an error; we currently use SecureTransport
|
||||
(4) Enable USE_NGHTTP2. Because our nghttp2 is at a non-standard path and we
|
||||
don't install the pkgconfig support, the configure script cannot
|
||||
configure it automatically.
|
||||
|
@ -1,11 +1,20 @@
|
||||
/* lib/curl_config.h. Generated from curl_config.h.in by configure. */
|
||||
/* lib/curl_config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* to enable curl debug memory tracking */
|
||||
/* #undef CURLDEBUG */
|
||||
|
||||
/* Location of default ca bundle */
|
||||
/* #undef CURL_CA_BUNDLE */
|
||||
|
||||
/* define "1" to use built in CA store of SSL library */
|
||||
/* #undef CURL_CA_FALLBACK */
|
||||
|
||||
/* Location of default ca path */
|
||||
#define CURL_CA_PATH "/System/Library/OpenSSL/certs"
|
||||
/* #undef CURL_CA_PATH */
|
||||
|
||||
/* Default SSL backend */
|
||||
/* #undef CURL_DEFAULT_SSL_BACKEND */
|
||||
|
||||
/* to disable cookies support */
|
||||
/* #undef CURL_DISABLE_COOKIES */
|
||||
@ -35,11 +44,14 @@
|
||||
#define CURL_DISABLE_LDAP 1
|
||||
|
||||
/* to disable LDAPS */
|
||||
/* #undef CURL_DISABLE_LDAPS */
|
||||
#define CURL_DISABLE_LDAPS 1
|
||||
|
||||
/* to disable --libcurl C code generation option */
|
||||
/* #undef CURL_DISABLE_LIBCURL_OPTION */
|
||||
|
||||
/* if the OpenSSL configuration won't be loaded automatically */
|
||||
/* #undef CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG */
|
||||
|
||||
/* to disable POP3 */
|
||||
/* #undef CURL_DISABLE_POP3 */
|
||||
|
||||
@ -70,6 +82,15 @@
|
||||
/* Definition to make a library symbol externally visible. */
|
||||
#define CURL_EXTERN_SYMBOL __attribute__ ((__visibility__ ("default")))
|
||||
|
||||
/* IP address type in sockaddr */
|
||||
#define CURL_SA_FAMILY_T sa_family_t
|
||||
|
||||
/* built with multiple SSL backends */
|
||||
#define CURL_WITH_MULTI_SSL 1
|
||||
|
||||
/* enable debug build options */
|
||||
/* #undef DEBUGBUILD */
|
||||
|
||||
/* your Entropy Gathering Daemon socket pathname */
|
||||
/* #undef EGD_SOCKET */
|
||||
|
||||
@ -79,21 +100,6 @@
|
||||
/* Define to the type of arg 2 for gethostname. */
|
||||
#define GETHOSTNAME_TYPE_ARG2 size_t
|
||||
|
||||
/* Define to the type qualifier of arg 1 for getnameinfo. */
|
||||
#define GETNAMEINFO_QUAL_ARG1 const
|
||||
|
||||
/* Define to the type of arg 1 for getnameinfo. */
|
||||
#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
|
||||
|
||||
/* Define to the type of arg 2 for getnameinfo. */
|
||||
#define GETNAMEINFO_TYPE_ARG2 socklen_t
|
||||
|
||||
/* Define to the type of args 4 and 6 for getnameinfo. */
|
||||
#define GETNAMEINFO_TYPE_ARG46 socklen_t
|
||||
|
||||
/* Define to the type of arg 7 for getnameinfo. */
|
||||
#define GETNAMEINFO_TYPE_ARG7 int
|
||||
|
||||
/* Specifies the number of arguments to getservbyport_r */
|
||||
/* #undef GETSERVBYPORT_R_ARGS */
|
||||
|
||||
@ -124,6 +130,15 @@
|
||||
/* Define to 1 if using BoringSSL. */
|
||||
/* #undef HAVE_BORINGSSL */
|
||||
|
||||
/* if BROTLI is in use */
|
||||
/* #undef HAVE_BROTLI */
|
||||
|
||||
/* Define to 1 if you have the <brotli/decode.h> header file. */
|
||||
/* undef HAVE_BROTLI_DECODE_H */
|
||||
|
||||
/* Define to 1 if you have the __builtin_available function. */
|
||||
#define HAVE_BUILTIN_AVAILABLE 1
|
||||
|
||||
/* Define to 1 if you have the clock_gettime function and monotonic timer. */
|
||||
/* #undef HAVE_CLOCK_GETTIME_MONOTONIC */
|
||||
|
||||
@ -136,30 +151,31 @@
|
||||
/* Define to 1 if you have the connect function. */
|
||||
#define HAVE_CONNECT 1
|
||||
|
||||
/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
|
||||
/* #undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA */
|
||||
|
||||
/* Define to 1 if you have the <crypto.h> header file. */
|
||||
/* #undef HAVE_CRYPTO_H */
|
||||
|
||||
/* Define to 1 if you have the `CyaSSL_CTX_UseSupportedCurve' function. */
|
||||
/* #undef HAVE_CYASSL_CTX_USESUPPORTEDCURVE */
|
||||
|
||||
/* Define to 1 if you have the <cyassl/error-ssl.h> header file. */
|
||||
/* #undef HAVE_CYASSL_ERROR_SSL_H */
|
||||
|
||||
/* Define to 1 if you have the `CyaSSL_get_peer_certificate' function. */
|
||||
/* #undef HAVE_CYASSL_GET_PEER_CERTIFICATE */
|
||||
|
||||
/* Define to 1 if you have the <cyassl/options.h> header file. */
|
||||
/* #undef HAVE_CYASSL_OPTIONS_H */
|
||||
|
||||
/* Define to 1 if you have the `DES_set_odd_parity' function. */
|
||||
/* #undef HAVE_DES_SET_ODD_PARITY */
|
||||
/* Define to 1 if you have the declaration of `getpwuid_r', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_GETPWUID_R 1
|
||||
|
||||
/* "Set if getpwuid_r() declaration is missing" */
|
||||
/* #undef HAVE_DECL_GETPWUID_R_MISSING */
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define to 1 if you have the `ENGINE_cleanup' function. */
|
||||
/* #undef HAVE_ENGINE_CLEANUP */
|
||||
|
||||
/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
|
||||
/* #undef HAVE_ENGINE_LOAD_BUILTIN_ENGINES */
|
||||
|
||||
/* Define to 1 if you have the <errno.h> header file. */
|
||||
#define HAVE_ERRNO_H 1
|
||||
|
||||
@ -175,11 +191,8 @@
|
||||
/* 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 fdopen function. */
|
||||
#define HAVE_FDOPEN 1
|
||||
|
||||
/* Define to 1 if you have the `fork' function. */
|
||||
#define HAVE_FORK 1
|
||||
/* Define to 1 if you have the `fnmatch' function. */
|
||||
#define HAVE_FNMATCH 1
|
||||
|
||||
/* Define to 1 if you have the freeaddrinfo function. */
|
||||
#define HAVE_FREEADDRINFO 1
|
||||
@ -247,18 +260,12 @@
|
||||
/* Define to 1 if you have a working getifaddrs function. */
|
||||
#define HAVE_GETIFADDRS 1
|
||||
|
||||
/* Define to 1 if you have the getnameinfo function. */
|
||||
#define HAVE_GETNAMEINFO 1
|
||||
|
||||
/* 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. */
|
||||
#define HAVE_GETPWUID 1
|
||||
|
||||
@ -280,6 +287,16 @@
|
||||
/* Define to 1 if you have a working gmtime_r function. */
|
||||
#define HAVE_GMTIME_R 1
|
||||
|
||||
/* Define to 1 if you have the `gnutls_alpn_set_protocols' function. */
|
||||
/* #undef HAVE_GNUTLS_ALPN_SET_PROTOCOLS */
|
||||
|
||||
/* Define to 1 if you have the `gnutls_certificate_set_x509_key_file2'
|
||||
function. */
|
||||
/* #undef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2 */
|
||||
|
||||
/* Define to 1 if you have the `gnutls_ocsp_req_init' function. */
|
||||
/* #undef HAVE_GNUTLS_OCSP_REQ_INIT */
|
||||
|
||||
/* if you have the function gnutls_srp_verifier */
|
||||
/* #undef HAVE_GNUTLS_SRP */
|
||||
|
||||
@ -287,13 +304,13 @@
|
||||
/* #undef HAVE_GSSAPI */
|
||||
|
||||
/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
|
||||
#define HAVE_GSSAPI_GSSAPI_GENERIC_H 1
|
||||
/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */
|
||||
|
||||
/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
|
||||
#define HAVE_GSSAPI_GSSAPI_H 1
|
||||
/* #undef HAVE_GSSAPI_GSSAPI_H */
|
||||
|
||||
/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
|
||||
#define HAVE_GSSAPI_GSSAPI_KRB5_H 1
|
||||
/* #undef HAVE_GSSAPI_GSSAPI_KRB5_H */
|
||||
|
||||
/* if you have GNU GSS */
|
||||
/* #undef HAVE_GSSGNU */
|
||||
@ -302,16 +319,10 @@
|
||||
/* #undef HAVE_GSSHEIMDAL */
|
||||
|
||||
/* if you have MIT Kerberos */
|
||||
#define HAVE_GSSMIT 1
|
||||
/* #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 <idn2.h> header file. */
|
||||
/* #undef HAVE_IDN2_H */
|
||||
|
||||
/* Define to 1 if you have the <ifaddrs.h> header file. */
|
||||
#define HAVE_IFADDRS_H 1
|
||||
@ -319,9 +330,6 @@
|
||||
/* Define to 1 if you have the `if_nametoindex' function. */
|
||||
#define HAVE_IF_NAMETOINDEX 1
|
||||
|
||||
/* Define to 1 if you have the `inet_addr' function. */
|
||||
#define HAVE_INET_ADDR 1
|
||||
|
||||
/* Define to 1 if you have the inet_ntoa_r function. */
|
||||
/* #undef HAVE_INET_NTOA_R */
|
||||
|
||||
@ -366,34 +374,34 @@
|
||||
/* #undef HAVE_IO_H */
|
||||
|
||||
/* Define to 1 if you have the lber.h header file. */
|
||||
/* #undef HAVE_LBER_H 1 */
|
||||
/* #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. */
|
||||
/* #define HAVE_LDAP_H 1 */
|
||||
/* #undef HAVE_LDAP_H */
|
||||
|
||||
/* Define to 1 if you have the `ldap_init_fd' function. */
|
||||
/* #undef HAVE_LDAP_INIT_FD */
|
||||
|
||||
/* Use LDAPS implementation */
|
||||
/* #define HAVE_LDAP_SSL 1 */
|
||||
/* #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. */
|
||||
/* #define HAVE_LDAP_URL_PARSE 1 */
|
||||
/* #undef HAVE_LDAP_URL_PARSE */
|
||||
|
||||
/* Define to 1 if you have the `brotlidec' library (-lbrotlidec). */
|
||||
#define HAVE_LIBBROTLIDEC 1
|
||||
|
||||
/* Define to 1 if you have the <libgen.h> header file. */
|
||||
#define HAVE_LIBGEN_H 1
|
||||
|
||||
/* Define to 1 if you have the `idn' library (-lidn). */
|
||||
/* #undef HAVE_LIBIDN */
|
||||
|
||||
/* Define to 1 if you have the `resolve' library (-lresolve). */
|
||||
#define HAVE_LIBRESOLVE 1
|
||||
/* Define to 1 if you have the `idn2' library (-lidn2). */
|
||||
/* #undef HAVE_LIBIDN2 */
|
||||
|
||||
/* Define to 1 if using libressl. */
|
||||
/* #undef HAVE_LIBRESSL */
|
||||
@ -401,20 +409,26 @@
|
||||
/* Define to 1 if you have the <librtmp/rtmp.h> header file. */
|
||||
/* #undef HAVE_LIBRTMP_RTMP_H */
|
||||
|
||||
/* Define to 1 if you have the `ssh' library (-lssh). */
|
||||
/* #undef HAVE_LIBSSH */
|
||||
|
||||
/* 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). */
|
||||
#define HAVE_LIBSSL 1
|
||||
/* #undef HAVE_LIBSSL */
|
||||
|
||||
/* if zlib is available */
|
||||
#define HAVE_LIBZ 1
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#define HAVE_LIMITS_H 1
|
||||
/* Define to 1 if you have the <linux/tcp.h> header file. */
|
||||
/* #undef HAVE_LINUX_TCP_H */
|
||||
|
||||
/* if your compiler supports LL */
|
||||
#define HAVE_LL 1
|
||||
@ -428,6 +442,9 @@
|
||||
/* Define to 1 if the compiler supports the 'long long' data type. */
|
||||
#define HAVE_LONGLONG 1
|
||||
|
||||
/* Define to 1 if you have the `mach_absolute_time' function. */
|
||||
#define HAVE_MACH_ABSOLUTE_TIME 1
|
||||
|
||||
/* Define to 1 if you have the malloc.h header file. */
|
||||
/* #undef HAVE_MALLOC_H */
|
||||
|
||||
@ -443,6 +460,9 @@
|
||||
/* Define to 1 if you have the <netdb.h> header file. */
|
||||
#define HAVE_NETDB_H 1
|
||||
|
||||
/* Define to 1 if you have the <netinet/in6.h> header file. */
|
||||
/* #undef HAVE_NETINET_IN6_H */
|
||||
|
||||
/* Define to 1 if you have the <netinet/in.h> header file. */
|
||||
#define HAVE_NETINET_IN_H 1
|
||||
|
||||
@ -455,9 +475,6 @@
|
||||
/* Define to 1 if you have the <nghttp2/nghttp2.h> header file. */
|
||||
/* #undef HAVE_NGHTTP2_NGHTTP2_H */
|
||||
|
||||
/* Define to 1 if NI_WITHSCOPEID exists and works. */
|
||||
/* #undef HAVE_NI_WITHSCOPEID */
|
||||
|
||||
/* if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE
|
||||
*/
|
||||
/* #undef HAVE_OLD_GSSMIT */
|
||||
@ -465,18 +482,12 @@
|
||||
/* Define to 1 if you have the <openssl/crypto.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_CRYPTO_H */
|
||||
|
||||
/* Define to 1 if you have the <openssl/engine.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_ENGINE_H */
|
||||
|
||||
/* Define to 1 if you have the <openssl/err.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_ERR_H */
|
||||
|
||||
/* Define to 1 if you have the <openssl/pem.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_PEM_H */
|
||||
|
||||
/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_PKCS12_H */
|
||||
|
||||
/* Define to 1 if you have the <openssl/rsa.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_RSA_H */
|
||||
|
||||
@ -486,23 +497,26 @@
|
||||
/* Define to 1 if you have the <openssl/ssl.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_SSL_H */
|
||||
|
||||
/* Define to 1 if you have the `OpenSSL_version' function. */
|
||||
/* #undef HAVE_OPENSSL_VERSION */
|
||||
|
||||
/* Define to 1 if you have the <openssl/x509.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_X509_H */
|
||||
|
||||
/* Define to 1 if you have the <pem.h> header file. */
|
||||
/* #undef HAVE_PEM_H */
|
||||
|
||||
/* Define to 1 if you have the `perror' function. */
|
||||
#define HAVE_PERROR 1
|
||||
|
||||
/* Define to 1 if you have the `pipe' function. */
|
||||
#define HAVE_PIPE 1
|
||||
|
||||
/* if you have the PK11_CreateManagedGenericObject function */
|
||||
/* #undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT */
|
||||
|
||||
/* Define to 1 if you have a working poll function. */
|
||||
#define HAVE_POLL 1
|
||||
/* #undef HAVE_POLL */
|
||||
|
||||
/* If you have a fine poll */
|
||||
#define HAVE_POLL_FINE 1
|
||||
/* #undef HAVE_POLL_FINE */
|
||||
|
||||
/* Define to 1 if you have the <poll.h> header file. */
|
||||
#define HAVE_POLL_H 1
|
||||
@ -510,6 +524,9 @@
|
||||
/* Define to 1 if you have a working POSIX-style strerror_r function. */
|
||||
#define HAVE_POSIX_STRERROR_R 1
|
||||
|
||||
/* Define to 1 if you have the <proto/bsdsocket.h> header file. */
|
||||
/* #undef HAVE_PROTO_BSDSOCKET_H */
|
||||
|
||||
/* if you have <pthread.h> */
|
||||
#define HAVE_PTHREAD_H 1
|
||||
|
||||
@ -519,12 +536,6 @@
|
||||
/* Define to 1 if you have the `RAND_egd' function. */
|
||||
/* #undef HAVE_RAND_EGD */
|
||||
|
||||
/* 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 to 1 if you have the recv function. */
|
||||
#define HAVE_RECV 1
|
||||
|
||||
@ -606,9 +617,6 @@
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* 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
|
||||
|
||||
@ -717,14 +725,8 @@
|
||||
/* 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 this if time_t is unsigned */
|
||||
/* #undef HAVE_TIME_T_UNSIGNED */
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
@ -732,6 +734,9 @@
|
||||
/* Define to 1 if you have the `utime' function. */
|
||||
#define HAVE_UTIME 1
|
||||
|
||||
/* Define to 1 if you have the `utimes' function. */
|
||||
#define HAVE_UTIMES 1
|
||||
|
||||
/* Define to 1 if you have the <utime.h> header file. */
|
||||
#define HAVE_UTIME_H 1
|
||||
|
||||
@ -756,6 +761,15 @@
|
||||
/* Define to 1 if you have the winsock.h header file. */
|
||||
/* #undef HAVE_WINSOCK_H */
|
||||
|
||||
/* Define to 1 if you have the `wolfSSLv3_client_method' function. */
|
||||
/* #undef HAVE_WOLFSSLV3_CLIENT_METHOD */
|
||||
|
||||
/* Define to 1 if you have the `wolfSSL_get_peer_certificate' function. */
|
||||
/* #undef HAVE_WOLFSSL_GET_PEER_CERTIFICATE */
|
||||
|
||||
/* Define to 1 if you have the `wolfSSL_UseALPN' function. */
|
||||
/* #undef HAVE_WOLFSSL_USEALPN */
|
||||
|
||||
/* Define this symbol if your OS supports changing the contents of argv */
|
||||
#define HAVE_WRITABLE_ARGV 1
|
||||
|
||||
@ -771,8 +785,7 @@
|
||||
/* if you have the zlib.h header file */
|
||||
#define HAVE_ZLIB_H 1
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
/* Define to 1 if you need the lber.h header file even with ldap.h */
|
||||
@ -803,7 +816,7 @@
|
||||
#define PACKAGE "curl"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "a suitable curl mailing list: http://curl.haxx.se/mail/"
|
||||
#define PACKAGE_BUGREPORT "a suitable curl mailing list: https://curl.haxx.se/mail/"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "curl"
|
||||
@ -874,46 +887,42 @@
|
||||
/* Define to the function return type for send. */
|
||||
#define SEND_TYPE_RETV ssize_t
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
/* The number of bytes in type curl_off_t */
|
||||
#define SIZEOF_CURL_OFF_T 8
|
||||
|
||||
/* The number of bytes in type int */
|
||||
#define SIZEOF_INT 4
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
/* The number of bytes in type long */
|
||||
#ifdef __LP64__
|
||||
#define SIZEOF_LONG 8
|
||||
#else
|
||||
#define SIZEOF_LONG 4
|
||||
#endif
|
||||
|
||||
/* The size of `long long', as computed by sizeof. */
|
||||
/* The number of bytes in type long long */
|
||||
/* #undef SIZEOF_LONG_LONG */
|
||||
|
||||
/* The size of `off_t', as computed by sizeof. */
|
||||
/* The number of bytes in type off_t */
|
||||
#define SIZEOF_OFF_T 8
|
||||
|
||||
/* The size of `short', as computed by sizeof. */
|
||||
/* The number of bytes in type short */
|
||||
#define SIZEOF_SHORT 2
|
||||
|
||||
/* The size of `size_t', as computed by sizeof. */
|
||||
/* The number of bytes in type size_t */
|
||||
#ifdef __LP64__
|
||||
#define SIZEOF_SIZE_T 8
|
||||
#else
|
||||
#define SIZEOF_SIZE_T 4
|
||||
#endif
|
||||
|
||||
/* The size of `time_t', as computed by sizeof. */
|
||||
/* The number of bytes in type time_t */
|
||||
#ifdef __LP64__
|
||||
#define SIZEOF_TIME_T 8
|
||||
#else
|
||||
#define SIZEOF_TIME_T 4
|
||||
#endif
|
||||
|
||||
/* The size of `void*', as computed by sizeof. */
|
||||
#ifdef __LP64__
|
||||
#define SIZEOF_VOIDP 8
|
||||
#else
|
||||
#define SIZEOF_VOIDP 4
|
||||
#endif
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
@ -923,39 +932,50 @@
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#define TIME_WITH_SYS_TIME 1
|
||||
|
||||
/* to enable alt-svc */
|
||||
/* #undef USE_ALTSVC */
|
||||
|
||||
/* if AmiSSL is in use */
|
||||
/* #undef USE_AMISSL */
|
||||
|
||||
/* Define to enable c-ares support */
|
||||
/* #undef USE_ARES */
|
||||
|
||||
/* if axTLS is enabled */
|
||||
/* #undef USE_AXTLS */
|
||||
|
||||
/* if CyaSSL is enabled */
|
||||
/* if CyaSSL/WolfSSL is enabled */
|
||||
/* #undef USE_CYASSL */
|
||||
|
||||
/* to enable iOS/Mac OS X native SSL/TLS support */
|
||||
/* #undef USE_DARWINSSL 0 */
|
||||
#define USE_DARWINSSL 1
|
||||
|
||||
/* if GnuTLS is enabled */
|
||||
/* #undef USE_GNUTLS */
|
||||
|
||||
/* if GnuTLS uses nettle as crypto backend */
|
||||
/* #undef USE_GNUTLS_NETTLE */
|
||||
|
||||
/* PSL support enabled */
|
||||
/* #undef USE_LIBPSL */
|
||||
|
||||
/* if librtmp is in use */
|
||||
/* #undef USE_LIBRTMP */
|
||||
|
||||
/* if libSSH is in use */
|
||||
/* #undef USE_LIBSSH */
|
||||
|
||||
/* if libSSH2 is in use */
|
||||
/* #undef USE_LIBSSH2 */
|
||||
|
||||
/* If you want to build curl with the built-in manual */
|
||||
#define USE_MANUAL 1
|
||||
|
||||
/* if mbedTLS is enabled */
|
||||
/* #undef USE_MBEDTLS */
|
||||
|
||||
/* if MesaLink is enabled */
|
||||
/* #undef USE_MESALINK */
|
||||
|
||||
/* Define to enable metalink support */
|
||||
/* #undef USE_METALINK */
|
||||
|
||||
/* if nghttp2 is in use */
|
||||
/* #undef USE_NGHTTP2 */
|
||||
#define USE_NGHTTP2 1
|
||||
|
||||
/* if NSS is enabled */
|
||||
/* #undef USE_NSS */
|
||||
@ -964,7 +984,7 @@
|
||||
/* #undef USE_OPENLDAP */
|
||||
|
||||
/* if OpenSSL is in use */
|
||||
/* #define USE_OPENSSL 1 */
|
||||
/* #undef USE_OPENSSL */
|
||||
|
||||
/* if PolarSSL is enabled */
|
||||
/* #undef USE_POLARSSL */
|
||||
@ -972,9 +992,15 @@
|
||||
/* to enable Windows native SSL/TLS support */
|
||||
/* #undef USE_SCHANNEL */
|
||||
|
||||
/* enable Secure Transport */
|
||||
#define USE_SECTRANSP 1
|
||||
|
||||
/* if you want POSIX threaded DNS lookup */
|
||||
#define USE_THREADS_POSIX 1
|
||||
|
||||
/* if you want Win32 threaded DNS lookup */
|
||||
/* #undef USE_THREADS_WIN32 */
|
||||
|
||||
/* Use TLS-SRP authentication */
|
||||
/* #undef USE_TLS_SRP */
|
||||
|
||||
@ -1004,9 +1030,6 @@
|
||||
/* Define to 1 to provide own prototypes. */
|
||||
/* #undef WANT_IDN_PROTOTYPES */
|
||||
|
||||
/* 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 */
|
1065
config_mac/curl_config.h
Normal file
1065
config_mac/curl_config.h
Normal file
File diff suppressed because it is too large
Load Diff
19
curl.plist
19
curl.plist
@ -5,22 +5,21 @@
|
||||
<key>OpenSourceProject</key>
|
||||
<string>curl</string>
|
||||
<key>OpenSourceVersion</key>
|
||||
<string>7.43.0</string>
|
||||
<string>7.64.1</string>
|
||||
<key>OpenSourceWebsiteURL</key>
|
||||
<string>http://curl.haxx.se/</string>
|
||||
<key>OpenSourceURL</key>
|
||||
<string>http://curl.haxx.se/download/curl-7.43.0.tar.bz2</string>
|
||||
<key>OpenSourceSHA1</key>
|
||||
<string>d821ea39610b7f1122f1f574a4d8e20e81b3c561</string>
|
||||
<string>https://curl.haxx.se/download/curl-7.64.1.tar.bz2</string>
|
||||
<key>OpenSourceSHA256</key>
|
||||
<string>4cc7c738b35250d0680f29e93e0820c4cb40035f43514ea3ec8d60322d41a45d</string>
|
||||
<key>OpenSourceImportDate</key>
|
||||
<string>2015-07-13</string>
|
||||
<string>2019-04-07</string>
|
||||
<key>OpenSourceModifications</key>
|
||||
<array>
|
||||
<string>curl-config.in: remove -I, -L, and static library info</string>
|
||||
<string>docs/curl.1: remove references to netrc(4) and wget(1)</string>
|
||||
<string>include/curl/multi.h: Add availability to curl_multi_wait (13158909)</string>
|
||||
<string>lib/ldap.c: 5648196</string>
|
||||
<string>lib/multi.c, lib/transfer.c: 903b6e05565bf826b4194447864288642214b094</string>
|
||||
<string>On macOS, use openssl if present, secure-transport if not.</string>
|
||||
<string>lib/curl_gssapi.c: Address pointer alignment issue in gss_OID_desc structs.</string>
|
||||
<string>include/curl/curl.h: Moved CURLE_SSL_CACERT back to being an enum value instead of a macro.</string>
|
||||
<string>lib/vauth/spnego_gssapi.c: Replace OOM error with login denied error</string>
|
||||
</array>
|
||||
<key>OpenSourceLicense</key>
|
||||
<string>MIT</string>
|
||||
|
File diff suppressed because it is too large
Load Diff
12057
curl/CHANGES
12057
curl/CHANGES
File diff suppressed because it is too large
Load Diff
@ -1,2 +1 @@
|
||||
@CMAKE_CONFIGURABLE_FILE_CONTENT@
|
||||
|
||||
|
61
curl/CMake/CurlSymbolHiding.cmake
Normal file
61
curl/CMake/CurlSymbolHiding.cmake
Normal file
@ -0,0 +1,61 @@
|
||||
include(CheckCSourceCompiles)
|
||||
|
||||
option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON)
|
||||
mark_as_advanced(CURL_HIDDEN_SYMBOLS)
|
||||
|
||||
if(CURL_HIDDEN_SYMBOLS)
|
||||
set(SUPPORTS_SYMBOL_HIDING FALSE)
|
||||
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
|
||||
elseif(CMAKE_COMPILER_IS_GNUCC)
|
||||
if(NOT CMAKE_VERSION VERSION_LESS 2.8.10)
|
||||
set(GCC_VERSION ${CMAKE_C_COMPILER_VERSION})
|
||||
else()
|
||||
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
|
||||
OUTPUT_VARIABLE GCC_VERSION)
|
||||
endif()
|
||||
if(NOT GCC_VERSION VERSION_LESS 3.4)
|
||||
# note: this is considered buggy prior to 4.0 but the autotools don't care, so let's ignore that fact
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__global")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden")
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0)
|
||||
# note: this should probably just check for version 9.1.045 but I'm not 100% sure
|
||||
# so let's to it the same way autotools do.
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
|
||||
check_c_source_compiles("#include <stdio.h>
|
||||
int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
|
||||
if(NOT _no_bug)
|
||||
set(SUPPORTS_SYMBOL_HIDING FALSE)
|
||||
set(_SYMBOL_EXTERN "")
|
||||
set(_CFLAG_SYMBOLS_HIDE "")
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
endif()
|
||||
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING})
|
||||
elseif(MSVC)
|
||||
if(NOT CMAKE_VERSION VERSION_LESS 3.7)
|
||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
|
||||
else()
|
||||
message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.")
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS TRUE)
|
||||
endif()
|
||||
elseif()
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
|
||||
endif()
|
||||
|
||||
set(CURL_CFLAG_SYMBOLS_HIDE ${_CFLAG_SYMBOLS_HIDE})
|
||||
set(CURL_EXTERN_SYMBOL ${_SYMBOL_EXTERN})
|
@ -9,7 +9,7 @@
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
* 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
|
||||
@ -139,7 +139,7 @@ int main(void)
|
||||
rc = gethostbyname_r(address, &h, &hdata);
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
|
||||
rc = gethostbyname_r(address, &h, buffer, 8192, 0, &h_errnop);
|
||||
rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop);
|
||||
(void)hp; /* not used for test */
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||
@ -507,29 +507,103 @@ main ()
|
||||
#ifdef HAVE_GLIBC_STRERROR_R
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
void check(char c) {}
|
||||
|
||||
int
|
||||
main () {
|
||||
char buffer[1024]; /* big enough to play with */
|
||||
char *string =
|
||||
strerror_r(EACCES, buffer, sizeof(buffer));
|
||||
/* this should've returned a string */
|
||||
if(!string || !string[0])
|
||||
return 99;
|
||||
return 0;
|
||||
char buffer[1024];
|
||||
/* This will not compile if strerror_r does not return a char* */
|
||||
check(strerror_r(EACCES, buffer, sizeof(buffer))[0]);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_POSIX_STRERROR_R
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* float, because a pointer can't be implicitly cast to float */
|
||||
void check(float f) {}
|
||||
|
||||
int
|
||||
main () {
|
||||
char buffer[1024]; /* big enough to play with */
|
||||
int error =
|
||||
strerror_r(EACCES, buffer, sizeof(buffer));
|
||||
/* This should've returned zero, and written an error string in the
|
||||
buffer.*/
|
||||
if(!buffer[0] || error)
|
||||
return 99;
|
||||
return 0;
|
||||
char buffer[1024];
|
||||
/* This will not compile if strerror_r does not return an int */
|
||||
check(strerror_r(EACCES, buffer, sizeof(buffer)));
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_FSETXATTR_6
|
||||
#include <sys/xattr.h> /* header from libc, not from libattr */
|
||||
int
|
||||
main() {
|
||||
fsetxattr(0, 0, 0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_FSETXATTR_5
|
||||
#include <sys/xattr.h> /* header from libc, not from libattr */
|
||||
int
|
||||
main() {
|
||||
fsetxattr(0, 0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_CLOCK_GETTIME_MONOTONIC
|
||||
#include <time.h>
|
||||
int
|
||||
main() {
|
||||
struct timespec ts = {0, 0};
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_BUILTIN_AVAILABLE
|
||||
int
|
||||
main() {
|
||||
if(__builtin_available(macOS 10.12, *)) {}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_VARIADIC_MACROS_C99
|
||||
#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__)
|
||||
#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__)
|
||||
|
||||
int fun3(int arg1, int arg2, int arg3);
|
||||
int fun2(int arg1, int arg2);
|
||||
|
||||
int fun3(int arg1, int arg2, int arg3) {
|
||||
return arg1 + arg2 + arg3;
|
||||
}
|
||||
int fun2(int arg1, int arg2) {
|
||||
return arg1 + arg2;
|
||||
}
|
||||
|
||||
int
|
||||
main() {
|
||||
int res3 = c99_vmacro3(1, 2, 3);
|
||||
int res2 = c99_vmacro2(1, 2);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_VARIADIC_MACROS_GCC
|
||||
#define gcc_vmacro3(first, args...) fun3(first, args)
|
||||
#define gcc_vmacro2(first, args...) fun2(first, args)
|
||||
|
||||
int fun3(int arg1, int arg2, int arg3);
|
||||
int fun2(int arg1, int arg2);
|
||||
|
||||
int fun3(int arg1, int arg2, int arg3) {
|
||||
return arg1 + arg2 + arg3;
|
||||
}
|
||||
int fun2(int arg1, int arg2) {
|
||||
return arg1 + arg2;
|
||||
}
|
||||
|
||||
int
|
||||
main() {
|
||||
int res3 = gcc_vmacro3(1, 2, 3);
|
||||
int res2 = gcc_vmacro2(1, 2);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
42
curl/CMake/FindCARES.cmake
Normal file
42
curl/CMake/FindCARES.cmake
Normal file
@ -0,0 +1,42 @@
|
||||
# - Find c-ares
|
||||
# Find the c-ares includes and library
|
||||
# This module defines
|
||||
# CARES_INCLUDE_DIR, where to find ares.h, etc.
|
||||
# CARES_LIBRARIES, the libraries needed to use c-ares.
|
||||
# CARES_FOUND, If false, do not try to use c-ares.
|
||||
# also defined, but not for general use are
|
||||
# CARES_LIBRARY, where to find the c-ares library.
|
||||
|
||||
find_path(CARES_INCLUDE_DIR ares.h
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
)
|
||||
|
||||
set(CARES_NAMES ${CARES_NAMES} cares)
|
||||
find_library(CARES_LIBRARY
|
||||
NAMES ${CARES_NAMES}
|
||||
PATHS /usr/lib /usr/local/lib
|
||||
)
|
||||
|
||||
if(CARES_LIBRARY AND CARES_INCLUDE_DIR)
|
||||
set(CARES_LIBRARIES ${CARES_LIBRARY})
|
||||
set(CARES_FOUND "YES")
|
||||
else()
|
||||
set(CARES_FOUND "NO")
|
||||
endif()
|
||||
|
||||
|
||||
if(CARES_FOUND)
|
||||
if(NOT CARES_FIND_QUIETLY)
|
||||
message(STATUS "Found c-ares: ${CARES_LIBRARIES}")
|
||||
endif()
|
||||
else()
|
||||
if(CARES_FIND_REQUIRED)
|
||||
message(FATAL_ERROR "Could not find c-ares library")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
CARES_LIBRARY
|
||||
CARES_INCLUDE_DIR
|
||||
)
|
@ -12,7 +12,7 @@
|
||||
# GSS_LINKER_FLAGS - Additional linker flags
|
||||
# GSS_COMPILER_FLAGS - Additional compiler flags
|
||||
# GSS_VERSION - This is set to version advertised by pkg-config or read from manifest.
|
||||
# In case the library is found but no version info availabe it'll be set to "unknown"
|
||||
# In case the library is found but no version info available it'll be set to "unknown"
|
||||
|
||||
set(_MIT_MODNAME mit-krb5-gssapi)
|
||||
set(_HEIMDAL_MODNAME heimdal-gssapi)
|
||||
@ -28,211 +28,209 @@ set(_GSS_ROOT_HINTS
|
||||
|
||||
# try to find library using system pkg-config if user didn't specify root dir
|
||||
if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME})
|
||||
list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}")
|
||||
elseif(WIN32)
|
||||
list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]")
|
||||
endif()
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME})
|
||||
list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}")
|
||||
elseif(WIN32)
|
||||
list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approach.
|
||||
find_file(_GSS_CONFIGURE_SCRIPT
|
||||
find_file(_GSS_CONFIGURE_SCRIPT
|
||||
NAMES
|
||||
"krb5-config"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
bin
|
||||
NO_CMAKE_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH
|
||||
)
|
||||
|
||||
# if not found in user-supplied directories, maybe system knows better
|
||||
find_file(_GSS_CONFIGURE_SCRIPT
|
||||
NAMES
|
||||
"krb5-config"
|
||||
PATH_SUFFIXES
|
||||
bin
|
||||
)
|
||||
|
||||
if(_GSS_CONFIGURE_SCRIPT)
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
|
||||
OUTPUT_VARIABLE _GSS_CFLAGS
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
|
||||
if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
|
||||
# should also work in an odd case when multiple directories are given
|
||||
string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS)
|
||||
string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}")
|
||||
string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1" _GSS_CFLAGS "${_GSS_CFLAGS}")
|
||||
|
||||
foreach(_flag ${_GSS_CFLAGS})
|
||||
if(_flag MATCHES "^-I.*")
|
||||
string(REGEX REPLACE "^-I" "" _val "${_flag}")
|
||||
list(APPEND _GSS_INCLUDE_DIR "${_val}")
|
||||
else()
|
||||
list(APPEND _GSS_COMPILER_FLAGS "${_flag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
|
||||
OUTPUT_VARIABLE _GSS_LIB_FLAGS
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
|
||||
|
||||
if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
|
||||
# this script gives us libraries and link directories. Blah. We have to deal with it.
|
||||
string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS)
|
||||
string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
|
||||
string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
|
||||
|
||||
foreach(_flag ${_GSS_LIB_FLAGS})
|
||||
if(_flag MATCHES "^-l.*")
|
||||
string(REGEX REPLACE "^-l" "" _val "${_flag}")
|
||||
list(APPEND _GSS_LIBRARIES "${_val}")
|
||||
elseif(_flag MATCHES "^-L.*")
|
||||
string(REGEX REPLACE "^-L" "" _val "${_flag}")
|
||||
list(APPEND _GSS_LINK_DIRECTORIES "${_val}")
|
||||
else()
|
||||
list(APPEND _GSS_LINKER_FLAGS "${_flag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
|
||||
OUTPUT_VARIABLE _GSS_VERSION
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
|
||||
# older versions may not have the "--version" parameter. In this case we just don't care.
|
||||
if(_GSS_CONFIGURE_FAILED)
|
||||
set(_GSS_VERSION 0)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
|
||||
OUTPUT_VARIABLE _GSS_VENDOR
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
|
||||
# older versions may not have the "--vendor" parameter. In this case we just don't care.
|
||||
if(_GSS_CONFIGURE_FAILED)
|
||||
set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter
|
||||
else()
|
||||
if(_GSS_VENDOR MATCHES ".*H|heimdal.*")
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
else()
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
else() # either there is no config script or we are on platform that doesn't provide one (Windows?)
|
||||
|
||||
find_path(_GSS_INCLUDE_DIR
|
||||
NAMES
|
||||
"krb5-config"
|
||||
"gssapi/gssapi.h"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
bin
|
||||
NO_CMAKE_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH
|
||||
include
|
||||
inc
|
||||
)
|
||||
|
||||
# if not found in user-supplied directories, maybe system knows better
|
||||
find_file(_GSS_CONFIGURE_SCRIPT
|
||||
NAMES
|
||||
"krb5-config"
|
||||
PATH_SUFFIXES
|
||||
bin
|
||||
)
|
||||
if(_GSS_INCLUDE_DIR) #jay, we've found something
|
||||
set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}")
|
||||
check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS)
|
||||
|
||||
if(_GSS_CONFIGURE_SCRIPT)
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
|
||||
OUTPUT_VARIABLE _GSS_CFLAGS
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
|
||||
if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
|
||||
# should also work in an odd case when multiple directories are given
|
||||
string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS)
|
||||
string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}")
|
||||
string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1"_GSS_CFLAGS "${_GSS_CFLAGS}")
|
||||
|
||||
foreach(_flag ${_GSS_CFLAGS})
|
||||
if(_flag MATCHES "^-I.*")
|
||||
string(REGEX REPLACE "^-I" "" _val "${_flag}")
|
||||
list(APPEND _GSS_INCLUDE_DIR "${_val}")
|
||||
else()
|
||||
list(APPEND _GSS_COMPILER_FLAGS "${_flag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
|
||||
OUTPUT_VARIABLE _GSS_LIB_FLAGS
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
|
||||
if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
|
||||
# this script gives us libraries and link directories. Blah. We have to deal with it.
|
||||
string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS)
|
||||
string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
|
||||
string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1"_GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
|
||||
|
||||
foreach(_flag ${_GSS_LIB_FLAGS})
|
||||
if(_flag MATCHES "^-l.*")
|
||||
string(REGEX REPLACE "^-l" "" _val "${_flag}")
|
||||
list(APPEND _GSS_LIBRARIES "${_val}")
|
||||
elseif(_flag MATCHES "^-L.*")
|
||||
string(REGEX REPLACE "^-L" "" _val "${_flag}")
|
||||
list(APPEND _GSS_LINK_DIRECTORIES "${_val}")
|
||||
else()
|
||||
list(APPEND _GSS_LINKER_FLAGS "${_flag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
|
||||
OUTPUT_VARIABLE _GSS_VERSION
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
|
||||
# older versions may not have the "--version" parameter. In this case we just don't care.
|
||||
if(_GSS_CONFIGURE_FAILED)
|
||||
set(_GSS_VERSION 0)
|
||||
endif()
|
||||
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
|
||||
OUTPUT_VARIABLE _GSS_VENDOR
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
)
|
||||
|
||||
# older versions may not have the "--vendor" parameter. In this case we just don't care.
|
||||
if(_GSS_CONFIGURE_FAILED)
|
||||
set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter
|
||||
else()
|
||||
if(_GSS_VENDOR MATCHES ".*H|heimdal.*")
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
else()
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
else() # either there is no config script or we are on platform that doesn't provide one (Windows?)
|
||||
|
||||
find_path(_GSS_INCLUDE_DIR
|
||||
NAMES
|
||||
"gssapi/gssapi.h"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
inc
|
||||
)
|
||||
|
||||
if(_GSS_INCLUDE_DIR) #jay, we've found something
|
||||
set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}")
|
||||
check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS)
|
||||
|
||||
if(_GSS_HAVE_MIT_HEADERS)
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
else()
|
||||
# prevent compiling the header - just check if we can include it
|
||||
set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__")
|
||||
check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
|
||||
|
||||
check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
|
||||
if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H)
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_DEFINITIONS "")
|
||||
endif()
|
||||
else()
|
||||
# I'm not convienced if this is the right way but this is what autotools do at the moment
|
||||
find_path(_GSS_INCLUDE_DIR
|
||||
NAMES
|
||||
"gssapi.h"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
inc
|
||||
)
|
||||
|
||||
if(_GSS_INCLUDE_DIR)
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# if we have headers, check if we can link libraries
|
||||
if(GSS_FLAVOUR)
|
||||
set(_GSS_LIBDIR_SUFFIXES "")
|
||||
set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS})
|
||||
get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH)
|
||||
list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT})
|
||||
|
||||
if(WIN32)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64")
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi64")
|
||||
else()
|
||||
set(_GSS_LIBNAME "libgssapi")
|
||||
endif()
|
||||
else()
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386")
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi32")
|
||||
else()
|
||||
set(_GSS_LIBNAME "libgssapi")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi_krb5")
|
||||
else()
|
||||
set(_GSS_LIBNAME "gssapi")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_library(_GSS_LIBRARIES
|
||||
NAMES
|
||||
${_GSS_LIBNAME}
|
||||
HINTS
|
||||
${_GSS_LIBDIR_HINTS}
|
||||
PATH_SUFFIXES
|
||||
${_GSS_LIBDIR_SUFFIXES}
|
||||
)
|
||||
|
||||
endif()
|
||||
|
||||
endif()
|
||||
else()
|
||||
if(_GSS_PKG_${_MIT_MODNAME}_VERSION)
|
||||
if(_GSS_HAVE_MIT_HEADERS)
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION)
|
||||
else()
|
||||
# prevent compiling the header - just check if we can include it
|
||||
set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__")
|
||||
check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
|
||||
|
||||
check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
|
||||
if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H)
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_DEFINITIONS "")
|
||||
endif()
|
||||
else()
|
||||
# I'm not convienced if this is the right way but this is what autotools do at the moment
|
||||
find_path(_GSS_INCLUDE_DIR
|
||||
NAMES
|
||||
"gssapi.h"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
inc
|
||||
)
|
||||
|
||||
if(_GSS_INCLUDE_DIR)
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# if we have headers, check if we can link libraries
|
||||
if(GSS_FLAVOUR)
|
||||
set(_GSS_LIBDIR_SUFFIXES "")
|
||||
set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS})
|
||||
get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH)
|
||||
list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT})
|
||||
|
||||
if(WIN32)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64")
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi64")
|
||||
else()
|
||||
set(_GSS_LIBNAME "libgssapi")
|
||||
endif()
|
||||
else()
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386")
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi32")
|
||||
else()
|
||||
set(_GSS_LIBNAME "libgssapi")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi_krb5")
|
||||
else()
|
||||
set(_GSS_LIBNAME "gssapi")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_library(_GSS_LIBRARIES
|
||||
NAMES
|
||||
${_GSS_LIBNAME}
|
||||
HINTS
|
||||
${_GSS_LIBDIR_HINTS}
|
||||
PATH_SUFFIXES
|
||||
${_GSS_LIBDIR_SUFFIXES}
|
||||
)
|
||||
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
if(_GSS_PKG_${_MIT_MODNAME}_VERSION)
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION)
|
||||
else()
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(GSS_INCLUDE_DIR ${_GSS_INCLUDE_DIR})
|
||||
@ -243,35 +241,33 @@ set(GSS_COMPILER_FLAGS ${_GSS_COMPILER_FLAGS})
|
||||
set(GSS_VERSION ${_GSS_VERSION})
|
||||
|
||||
if(GSS_FLAVOUR)
|
||||
|
||||
if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest")
|
||||
else()
|
||||
set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest")
|
||||
endif()
|
||||
|
||||
if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}")
|
||||
file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str
|
||||
REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
|
||||
|
||||
string(REGEX MATCH "[0-9]\\.[^\"]+"
|
||||
GSS_VERSION "${heimdal_version_str}")
|
||||
endif()
|
||||
|
||||
if(NOT GSS_VERSION)
|
||||
set(GSS_VERSION "Heimdal Unknown")
|
||||
endif()
|
||||
elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT")
|
||||
get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE)
|
||||
if(WIN32 AND _MIT_VERSION)
|
||||
set(GSS_VERSION "${_MIT_VERSION}")
|
||||
else()
|
||||
set(GSS_VERSION "MIT Unknown")
|
||||
endif()
|
||||
if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest")
|
||||
else()
|
||||
set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}")
|
||||
file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str
|
||||
REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
|
||||
|
||||
string(REGEX MATCH "[0-9]\\.[^\"]+"
|
||||
GSS_VERSION "${heimdal_version_str}")
|
||||
endif()
|
||||
|
||||
if(NOT GSS_VERSION)
|
||||
set(GSS_VERSION "Heimdal Unknown")
|
||||
endif()
|
||||
elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT")
|
||||
get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE)
|
||||
if(WIN32 AND _MIT_VERSION)
|
||||
set(GSS_VERSION "${_MIT_VERSION}")
|
||||
else()
|
||||
set(GSS_VERSION "MIT Unknown")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
|
35
curl/CMake/FindLibSSH2.cmake
Normal file
35
curl/CMake/FindLibSSH2.cmake
Normal file
@ -0,0 +1,35 @@
|
||||
# - Try to find the libssh2 library
|
||||
# Once done this will define
|
||||
#
|
||||
# LIBSSH2_FOUND - system has the libssh2 library
|
||||
# LIBSSH2_INCLUDE_DIR - the libssh2 include directory
|
||||
# LIBSSH2_LIBRARY - the libssh2 library name
|
||||
|
||||
if(LIBSSH2_INCLUDE_DIR AND LIBSSH2_LIBRARY)
|
||||
set(LibSSH2_FIND_QUIETLY TRUE)
|
||||
endif()
|
||||
|
||||
find_path(LIBSSH2_INCLUDE_DIR libssh2.h
|
||||
)
|
||||
|
||||
find_library(LIBSSH2_LIBRARY NAMES ssh2
|
||||
)
|
||||
|
||||
if(LIBSSH2_INCLUDE_DIR)
|
||||
file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" libssh2_version_str REGEX "^#define[\t ]+LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9][0-9][0-9][0-9][0-9].*")
|
||||
|
||||
string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_MAJOR "${libssh2_version_str}")
|
||||
string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_MINOR "${libssh2_version_str}")
|
||||
string(REGEX REPLACE "^.*LIBSSH2_VERSION_NUM[\t ]+0x[0-9][0-9][0-9][0-9]([0-9][0-9]).*$" "\\1" LIBSSH2_VERSION_PATCH "${libssh2_version_str}")
|
||||
|
||||
string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MAJOR "${LIBSSH2_VERSION_MAJOR}")
|
||||
string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_MINOR "${LIBSSH2_VERSION_MINOR}")
|
||||
string(REGEX REPLACE "^0(.+)" "\\1" LIBSSH2_VERSION_PATCH "${LIBSSH2_VERSION_PATCH}")
|
||||
|
||||
set(LIBSSH2_VERSION "${LIBSSH2_VERSION_MAJOR}.${LIBSSH2_VERSION_MINOR}.${LIBSSH2_VERSION_PATCH}")
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LibSSH2 DEFAULT_MSG LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY )
|
||||
|
||||
mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY LIBSSH2_VERSION_MAJOR LIBSSH2_VERSION_MINOR LIBSSH2_VERSION_PATCH LIBSSH2_VERSION)
|
13
curl/CMake/FindMbedTLS.cmake
Normal file
13
curl/CMake/FindMbedTLS.cmake
Normal file
@ -0,0 +1,13 @@
|
||||
find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h)
|
||||
|
||||
find_library(MBEDTLS_LIBRARY mbedtls)
|
||||
find_library(MBEDX509_LIBRARY mbedx509)
|
||||
find_library(MBEDCRYPTO_LIBRARY mbedcrypto)
|
||||
|
||||
set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}")
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MBEDTLS DEFAULT_MSG
|
||||
MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
|
||||
|
||||
mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
|
18
curl/CMake/FindNGHTTP2.cmake
Normal file
18
curl/CMake/FindNGHTTP2.cmake
Normal file
@ -0,0 +1,18 @@
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_path(NGHTTP2_INCLUDE_DIR "nghttp2/nghttp2.h")
|
||||
|
||||
find_library(NGHTTP2_LIBRARY NAMES nghttp2)
|
||||
|
||||
find_package_handle_standard_args(NGHTTP2
|
||||
FOUND_VAR
|
||||
NGHTTP2_FOUND
|
||||
REQUIRED_VARS
|
||||
NGHTTP2_LIBRARY
|
||||
NGHTTP2_INCLUDE_DIR
|
||||
FAIL_MESSAGE
|
||||
"Could NOT find NGHTTP2"
|
||||
)
|
||||
|
||||
set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR})
|
||||
set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY})
|
@ -5,35 +5,35 @@
|
||||
# multiple times with a sequence of possibly dependent libraries in
|
||||
# order of least-to-most-dependent. Some libraries depend on others
|
||||
# to link correctly.
|
||||
macro(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
|
||||
macro(check_library_exists_concat LIBRARY SYMBOL VARIABLE)
|
||||
check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}"
|
||||
${VARIABLE})
|
||||
if(${VARIABLE})
|
||||
set(CURL_LIBS ${LIBRARY} ${CURL_LIBS})
|
||||
endif(${VARIABLE})
|
||||
endmacro(CHECK_LIBRARY_EXISTS_CONCAT)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Check if header file exists and add it to the list.
|
||||
# This macro is intended to be called multiple times with a sequence of
|
||||
# possibly dependent header files. Some headers depend on others to be
|
||||
# compiled correctly.
|
||||
macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
|
||||
macro(check_include_file_concat FILE VARIABLE)
|
||||
check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
|
||||
if(${VARIABLE})
|
||||
set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
|
||||
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
|
||||
endif(${VARIABLE})
|
||||
endmacro(CHECK_INCLUDE_FILE_CONCAT)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# For other curl specific tests, use this macro.
|
||||
macro(CURL_INTERNAL_TEST CURL_TEST)
|
||||
macro(curl_internal_test CURL_TEST)
|
||||
if(NOT DEFINED "${CURL_TEST}")
|
||||
set(MACRO_CHECK_FUNCTION_DEFINITIONS
|
||||
"-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
|
||||
if(CMAKE_REQUIRED_LIBRARIES)
|
||||
set(CURL_TEST_ADD_LIBRARIES
|
||||
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||
endif(CMAKE_REQUIRED_LIBRARIES)
|
||||
endif()
|
||||
|
||||
message(STATUS "Performing Curl Test ${CURL_TEST}")
|
||||
try_compile(${CURL_TEST}
|
||||
@ -48,48 +48,41 @@ macro(CURL_INTERNAL_TEST CURL_TEST)
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||
"Performing Curl Test ${CURL_TEST} passed with the following output:\n"
|
||||
"${OUTPUT}\n")
|
||||
else(${CURL_TEST})
|
||||
else()
|
||||
message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
|
||||
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||
"Performing Curl Test ${CURL_TEST} failed with the following output:\n"
|
||||
"${OUTPUT}\n")
|
||||
endif(${CURL_TEST})
|
||||
endif()
|
||||
endif()
|
||||
endmacro(CURL_INTERNAL_TEST)
|
||||
endmacro()
|
||||
|
||||
macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
|
||||
if(NOT DEFINED "${CURL_TEST}_COMPILE")
|
||||
set(MACRO_CHECK_FUNCTION_DEFINITIONS
|
||||
"-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
|
||||
if(CMAKE_REQUIRED_LIBRARIES)
|
||||
set(CURL_TEST_ADD_LIBRARIES
|
||||
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||
endif(CMAKE_REQUIRED_LIBRARIES)
|
||||
|
||||
message(STATUS "Performing Curl Test ${CURL_TEST}")
|
||||
try_run(${CURL_TEST} ${CURL_TEST}_COMPILE
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
|
||||
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
|
||||
"${CURL_TEST_ADD_LIBRARIES}"
|
||||
OUTPUT_VARIABLE OUTPUT)
|
||||
if(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
||||
set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||
message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
|
||||
else(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
||||
message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
|
||||
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||
file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
|
||||
"Performing Curl Test ${CURL_TEST} failed with the following output:\n"
|
||||
"${OUTPUT}")
|
||||
if(${CURL_TEST}_COMPILE)
|
||||
file(APPEND
|
||||
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
|
||||
"There was a problem running this test\n")
|
||||
endif(${CURL_TEST}_COMPILE)
|
||||
file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
|
||||
"\n\n")
|
||||
endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
||||
macro(curl_nroff_check)
|
||||
find_program(NROFF NAMES gnroff nroff)
|
||||
if(NROFF)
|
||||
# Need a way to write to stdin, this will do
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test")
|
||||
# Tests for a valid nroff option to generate a manpage
|
||||
foreach(_MANOPT "-man" "-mandoc")
|
||||
execute_process(COMMAND "${NROFF}" ${_MANOPT}
|
||||
OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT
|
||||
INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt"
|
||||
ERROR_QUIET)
|
||||
# Save the option if it was valid
|
||||
if(NROFF_MANOPT_OUTPUT)
|
||||
message("Found *nroff option: -- ${_MANOPT}")
|
||||
set(NROFF_MANOPT ${_MANOPT})
|
||||
set(NROFF_USEFUL ON)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
# No need for the temporary file
|
||||
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt")
|
||||
if(NOT NROFF_USEFUL)
|
||||
message(WARNING "Found no *nroff option to get plaintext from man pages")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "Found no *nroff program")
|
||||
endif()
|
||||
endmacro(CURL_INTERNAL_TEST_RUN)
|
||||
endmacro()
|
||||
|
@ -5,13 +5,13 @@ set(_source_epilogue "#undef inline")
|
||||
macro(add_header_include check header)
|
||||
if(${check})
|
||||
set(_source_epilogue "${_source_epilogue}\n#include <${header}>")
|
||||
endif(${check})
|
||||
endmacro(add_header_include)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
set(signature_call_conv)
|
||||
if(HAVE_WINDOWS_H)
|
||||
add_header_include(HAVE_WINDOWS_H "windows.h")
|
||||
add_header_include(HAVE_WINSOCK2_H "winsock2.h")
|
||||
add_header_include(HAVE_WINDOWS_H "windows.h")
|
||||
add_header_include(HAVE_WINSOCK_H "winsock.h")
|
||||
set(_source_epilogue
|
||||
"${_source_epilogue}\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif")
|
||||
@ -19,10 +19,10 @@ if(HAVE_WINDOWS_H)
|
||||
if(HAVE_LIBWS2_32)
|
||||
set(CMAKE_REQUIRED_LIBRARIES ws2_32)
|
||||
endif()
|
||||
else(HAVE_WINDOWS_H)
|
||||
else()
|
||||
add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
|
||||
add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
|
||||
endif(HAVE_WINDOWS_H)
|
||||
endif()
|
||||
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
int main(void) {
|
||||
@ -32,9 +32,9 @@ int main(void) {
|
||||
if(curl_cv_recv)
|
||||
if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||
foreach(recv_retv "int" "ssize_t" )
|
||||
foreach(recv_arg1 "int" "ssize_t" "SOCKET")
|
||||
foreach(recv_arg2 "void *" "char *")
|
||||
foreach(recv_arg3 "size_t" "int" "socklen_t" "unsigned int")
|
||||
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)
|
||||
unset(curl_cv_func_recv_test CACHE)
|
||||
@ -64,13 +64,13 @@ if(curl_cv_recv)
|
||||
set(RECV_TYPE_RETV "${recv_retv}")
|
||||
set(HAVE_RECV 1)
|
||||
set(curl_cv_func_recv_done 1)
|
||||
endif(curl_cv_func_recv_test)
|
||||
endif(NOT curl_cv_func_recv_done)
|
||||
endforeach(recv_arg4)
|
||||
endforeach(recv_arg3)
|
||||
endforeach(recv_arg2)
|
||||
endforeach(recv_arg1)
|
||||
endforeach(recv_retv)
|
||||
endif()
|
||||
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}")
|
||||
@ -81,10 +81,10 @@ if(curl_cv_recv)
|
||||
|
||||
if("${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||
message(FATAL_ERROR "Cannot find proper types to use for recv args")
|
||||
endif("${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||
else(curl_cv_recv)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Unable to link function recv")
|
||||
endif(curl_cv_recv)
|
||||
endif()
|
||||
set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv")
|
||||
set(HAVE_RECV 1)
|
||||
|
||||
@ -96,9 +96,9 @@ int main(void) {
|
||||
if(curl_cv_send)
|
||||
if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||
foreach(send_retv "int" "ssize_t" )
|
||||
foreach(send_arg1 "int" "ssize_t" "SOCKET")
|
||||
foreach(send_arg2 "const void *" "void *" "char *" "const char *")
|
||||
foreach(send_arg3 "size_t" "int" "socklen_t" "unsigned int")
|
||||
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)
|
||||
unset(curl_cv_func_send_test CACHE)
|
||||
@ -130,13 +130,13 @@ if(curl_cv_send)
|
||||
set(SEND_TYPE_RETV "${send_retv}")
|
||||
set(HAVE_SEND 1)
|
||||
set(curl_cv_func_send_done 1)
|
||||
endif(curl_cv_func_send_test)
|
||||
endif(NOT curl_cv_func_send_done)
|
||||
endforeach(send_arg4)
|
||||
endforeach(send_arg3)
|
||||
endforeach(send_arg2)
|
||||
endforeach(send_arg1)
|
||||
endforeach(send_retv)
|
||||
endif()
|
||||
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}")
|
||||
@ -148,11 +148,11 @@ if(curl_cv_send)
|
||||
|
||||
if("${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||
message(FATAL_ERROR "Cannot find proper types to use for send args")
|
||||
endif("${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||
endif()
|
||||
set(SEND_QUAL_ARG2 "const")
|
||||
else(curl_cv_send)
|
||||
else()
|
||||
message(FATAL_ERROR "Unable to link function send")
|
||||
endif(curl_cv_send)
|
||||
endif()
|
||||
set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send")
|
||||
set(HAVE_SEND 1)
|
||||
|
||||
@ -177,26 +177,57 @@ int main(void) {
|
||||
return 0;
|
||||
}" HAVE_STRUCT_TIMEVAL)
|
||||
|
||||
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
|
||||
# if not cross-compilation...
|
||||
include(CheckCSourceRuns)
|
||||
set(CMAKE_REQUIRED_FLAGS "")
|
||||
if(HAVE_SYS_POLL_H)
|
||||
set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H")
|
||||
elseif(HAVE_POLL_H)
|
||||
set(CMAKE_REQUIRED_FLAGS "-DHAVE_POLL_H")
|
||||
endif()
|
||||
check_c_source_runs("
|
||||
#include <stdlib.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
include(CheckCSourceRuns)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
if(HAVE_SYS_POLL_H)
|
||||
set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H")
|
||||
endif(HAVE_SYS_POLL_H)
|
||||
check_c_source_runs("
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
# include <sys/poll.h>
|
||||
#endif
|
||||
int main(void) {
|
||||
return poll((void *)0, 0, 10 /*ms*/);
|
||||
}" HAVE_POLL_FINE)
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
# include <sys/poll.h>
|
||||
#elif HAVE_POLL_H
|
||||
# include <poll.h>
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
{
|
||||
if(0 != poll(0, 0, 10)) {
|
||||
return 1; /* fail */
|
||||
}
|
||||
else {
|
||||
/* detect the 10.12 poll() breakage */
|
||||
struct timeval before, after;
|
||||
int rc;
|
||||
size_t us;
|
||||
|
||||
gettimeofday(&before, NULL);
|
||||
rc = poll(NULL, 0, 500);
|
||||
gettimeofday(&after, NULL);
|
||||
|
||||
us = (after.tv_sec - before.tv_sec) * 1000000 +
|
||||
(after.tv_usec - before.tv_usec);
|
||||
|
||||
if(us < 400000) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}" HAVE_POLL_FINE)
|
||||
endif()
|
||||
|
||||
set(HAVE_SIG_ATOMIC_T 1)
|
||||
set(CMAKE_REQUIRED_FLAGS)
|
||||
if(HAVE_SIGNAL_H)
|
||||
set(CMAKE_REQUIRED_FLAGS "-DHAVE_SIGNAL_H")
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES "signal.h")
|
||||
endif(HAVE_SIGNAL_H)
|
||||
endif()
|
||||
check_type_size("sig_atomic_t" SIZEOF_SIG_ATOMIC_T)
|
||||
if(HAVE_SIZEOF_SIG_ATOMIC_T)
|
||||
check_c_source_compiles("
|
||||
@ -210,8 +241,8 @@ if(HAVE_SIZEOF_SIG_ATOMIC_T)
|
||||
}" HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
|
||||
if(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
|
||||
set(HAVE_SIG_ATOMIC_T_VOLATILE 1)
|
||||
endif(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
|
||||
endif(HAVE_SIZEOF_SIG_ATOMIC_T)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_WINDOWS_H)
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h)
|
||||
@ -219,11 +250,10 @@ else()
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
if(HAVE_SYS_SOCKET_H)
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
|
||||
endif(HAVE_SYS_SOCKET_H)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE)
|
||||
if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
|
||||
set(HAVE_STRUCT_SOCKADDR_STORAGE 1)
|
||||
endif(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
|
||||
|
||||
endif()
|
||||
|
@ -118,8 +118,7 @@ if(NOT UNIX)
|
||||
|
||||
set(HAVE_SIGACTION 0)
|
||||
set(HAVE_MACRO_SIGSETJMP 0)
|
||||
else(WIN32)
|
||||
else()
|
||||
message("This file should be included on Windows platform only")
|
||||
endif(WIN32)
|
||||
endif(NOT UNIX)
|
||||
|
||||
endif()
|
||||
endif()
|
||||
|
@ -1,31 +1,13 @@
|
||||
# File containing various utilities
|
||||
|
||||
# Converts a CMake list to a string containing elements separated by spaces
|
||||
function(TO_LIST_SPACES _LIST_NAME OUTPUT_VAR)
|
||||
set(NEW_LIST_SPACE)
|
||||
foreach(ITEM ${${_LIST_NAME}})
|
||||
set(NEW_LIST_SPACE "${NEW_LIST_SPACE} ${ITEM}")
|
||||
# Returns a list of arguments that evaluate to true
|
||||
function(count_true output_count_var)
|
||||
set(lst)
|
||||
foreach(option_var IN LISTS ARGN)
|
||||
if(${option_var})
|
||||
list(APPEND lst ${option_var})
|
||||
endif()
|
||||
endforeach()
|
||||
string(STRIP ${NEW_LIST_SPACE} NEW_LIST_SPACE)
|
||||
set(${OUTPUT_VAR} "${NEW_LIST_SPACE}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Appends a lis of item to a string which is a space-separated list, if they don't already exist.
|
||||
function(LIST_SPACES_APPEND_ONCE LIST_NAME)
|
||||
string(REPLACE " " ";" _LIST ${${LIST_NAME}})
|
||||
list(APPEND _LIST ${ARGN})
|
||||
list(REMOVE_DUPLICATES _LIST)
|
||||
to_list_spaces(_LIST NEW_LIST_SPACE)
|
||||
set(${LIST_NAME} "${NEW_LIST_SPACE}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Convinience function that does the same as LIST(FIND ...) but with a TRUE/FALSE return value.
|
||||
# Ex: IN_STR_LIST(MY_LIST "Searched item" WAS_FOUND)
|
||||
function(IN_STR_LIST LIST_NAME ITEM_SEARCHED RETVAL)
|
||||
list(FIND ${LIST_NAME} ${ITEM_SEARCHED} FIND_POS)
|
||||
if(${FIND_POS} EQUAL -1)
|
||||
set(${RETVAL} FALSE PARENT_SCOPE)
|
||||
else()
|
||||
set(${RETVAL} TRUE PARENT_SCOPE)
|
||||
endif()
|
||||
list(LENGTH lst lst_len)
|
||||
set(${output_count_var} ${lst_len} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
26
curl/CMake/cmake_uninstall.cmake.in
Normal file
26
curl/CMake/cmake_uninstall.cmake.in
Normal file
@ -0,0 +1,26 @@
|
||||
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
|
||||
endif()
|
||||
message(${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
exec_program(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
if(NOT "${rm_retval}" STREQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||
endif()
|
||||
endforeach()
|
12
curl/CMake/curl-config.cmake.in
Normal file
12
curl/CMake/curl-config.cmake.in
Normal file
@ -0,0 +1,12 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
if(@USE_OPENSSL@)
|
||||
find_dependency(OpenSSL @OPENSSL_VERSION_MAJOR@)
|
||||
endif()
|
||||
if(@USE_ZLIB@)
|
||||
find_dependency(ZLIB @ZLIB_VERSION_MAJOR@)
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
|
||||
check_required_components("@PROJECT_NAME@")
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,7 @@
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright (c) 1996 - 2015, Daniel Stenberg, <daniel@haxx.se>.
|
||||
Copyright (c) 1996 - 2019, Daniel Stenberg, <daniel@haxx.se>, and many
|
||||
contributors, see the THANKS file.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
|
@ -65,7 +65,7 @@ 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]"|head -1`
|
||||
NEW_SDK64=`ls -r $SDK_PATH|egrep -v "10.[0-4][^0-9]" | head -1`
|
||||
if test $USE_OLD -gt 0
|
||||
then
|
||||
SDK64=$OLD_SDK64
|
||||
@ -126,15 +126,6 @@ if test ! -z $SDK32; then
|
||||
pwd
|
||||
lipo libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 -create -output libcurl.framework/${FRAMEWORK_VERSION}/libcurl
|
||||
rm libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64
|
||||
cp libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild32.h
|
||||
cp include/curl/curlbuild.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild64.h
|
||||
cat >libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl/curlbuild.h <<EOF
|
||||
#ifdef __LP64__
|
||||
#include "curl/curlbuild64.h"
|
||||
#else
|
||||
#include "curl/curlbuild32.h"
|
||||
#endif
|
||||
EOF
|
||||
fi
|
||||
|
||||
pwd
|
||||
|
464
curl/Makefile
464
curl/Makefile
@ -5,11 +5,11 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
# 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
|
||||
@ -20,8 +20,6 @@
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
VC=vc6
|
||||
|
||||
all:
|
||||
./configure
|
||||
make
|
||||
@ -30,30 +28,6 @@ ssl:
|
||||
./configure --with-ssl
|
||||
make
|
||||
|
||||
borland:
|
||||
cd lib
|
||||
$(MAKE) -f Makefile.b32
|
||||
cd ..\src
|
||||
$(MAKE) -f Makefile.b32
|
||||
|
||||
borland-ssl:
|
||||
cd lib
|
||||
$(MAKE) -f Makefile.b32 WITH_SSL=1
|
||||
cd ..\src
|
||||
$(MAKE) -f Makefile.b32 WITH_SSL=1
|
||||
|
||||
borland-ssl-zlib:
|
||||
cd lib
|
||||
$(MAKE) -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
|
||||
cd ..\src
|
||||
$(MAKE) -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
|
||||
|
||||
borland-clean:
|
||||
cd lib
|
||||
$(MAKE) -f Makefile.b32 clean
|
||||
cd ..\src
|
||||
$(MAKE) -f Makefile.b32 clean
|
||||
|
||||
watcom: .SYMBOLIC
|
||||
cd lib && $(MAKE) -u -f Makefile.Watcom
|
||||
cd src && $(MAKE) -u -f Makefile.Watcom
|
||||
@ -87,366 +61,13 @@ mingw32%:
|
||||
$(MAKE) -C lib -f Makefile.m32 CFG=$@
|
||||
$(MAKE) -C src -f Makefile.m32 CFG=$@
|
||||
|
||||
vc-clean: $(VC)
|
||||
cd lib
|
||||
nmake -f Makefile.$(VC) clean
|
||||
cd ..\src
|
||||
nmake -f Makefile.$(VC) clean
|
||||
vc:
|
||||
cd winbuild
|
||||
nmake /f Makefile.vc MACHINE=x86
|
||||
|
||||
vc-all: $(VC)
|
||||
cd lib
|
||||
nmake -f Makefile.$(VC) cfg=release
|
||||
nmake -f Makefile.$(VC) cfg=release-ssl
|
||||
nmake -f Makefile.$(VC) cfg=release-zlib
|
||||
nmake -f Makefile.$(VC) cfg=release-ssl-zlib
|
||||
nmake -f Makefile.$(VC) cfg=release-ssl-dll
|
||||
nmake -f Makefile.$(VC) cfg=release-zlib-dll
|
||||
nmake -f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
|
||||
nmake -f Makefile.$(VC) cfg=release-dll
|
||||
nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll
|
||||
nmake -f Makefile.$(VC) cfg=release-dll-zlib-dll
|
||||
nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
|
||||
nmake -f Makefile.$(VC) cfg=debug
|
||||
nmake -f Makefile.$(VC) cfg=debug-ssl
|
||||
nmake -f Makefile.$(VC) cfg=debug-zlib
|
||||
nmake -f Makefile.$(VC) cfg=debug-ssl-zlib
|
||||
nmake -f Makefile.$(VC) cfg=debug-ssl-dll
|
||||
nmake -f Makefile.$(VC) cfg=debug-zlib-dll
|
||||
nmake -f Makefile.$(VC) cfg=debug-ssl-dll-zlib-dll
|
||||
nmake -f Makefile.$(VC) cfg=debug-dll
|
||||
nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll
|
||||
nmake -f Makefile.$(VC) cfg=debug-dll-zlib-dll
|
||||
nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll-zlib-dll
|
||||
|
||||
vc: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC)
|
||||
|
||||
vc-x64: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
|
||||
|
||||
vc-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release WINDOWS_SSPI=1
|
||||
|
||||
vc-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release USE_IDN=1
|
||||
|
||||
vc-x64-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1
|
||||
|
||||
vc-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib
|
||||
|
||||
vc-x64-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib
|
||||
|
||||
vc-zlib-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-zlib-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1
|
||||
|
||||
vc-x64-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1
|
||||
|
||||
vc-zlib-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-zlib-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-ssl: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl
|
||||
|
||||
vc-x64-ssl: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl
|
||||
|
||||
vc-ssl-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-ssl-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl WINDOWS_SSPI=1
|
||||
|
||||
vc-ssl-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1
|
||||
|
||||
vc-x64-ssl-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1
|
||||
|
||||
vc-ssl-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-ssl-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-ssl-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib
|
||||
|
||||
vc-x64-ssl-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
|
||||
|
||||
vc-ssl-zlib-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-ssl-zlib-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-ssl-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1
|
||||
|
||||
vc-x64-ssl-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1
|
||||
|
||||
vc-ssl-zlib-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-ssl-zlib-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-ssl-ssh2-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib
|
||||
|
||||
vc-x64-ssl-ssh2-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib
|
||||
|
||||
vc-ssl-ssh2-zlib-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-ssl-ssh2-zlib-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-ssl-ssh2-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1
|
||||
|
||||
vc-x64-ssl-ssh2-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1
|
||||
|
||||
vc-ssl-ssh2-zlib-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-ssl-ssh2-zlib-idn-sspi: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-ssh2-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-winssl: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-winssl: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl WINDOWS_SSPI=1
|
||||
|
||||
vc-winssl-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-winssl-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-winssl-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-winssl-zlib: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib WINDOWS_SSPI=1
|
||||
|
||||
vc-winssl-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-x64-winssl-zlib-idn: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-winssl-zlib USE_IDN=1 WINDOWS_SSPI=1
|
||||
|
||||
vc-ssl-dll: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-dll
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-dll
|
||||
|
||||
vc-dll-ssl-dll: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll
|
||||
|
||||
vc-dll: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-dll
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-dll
|
||||
|
||||
vc-dll-zlib-dll: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll
|
||||
|
||||
vc-dll-ssl-dll-zlib-dll: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
|
||||
|
||||
vc-ssl-dll-zlib-dll: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
|
||||
|
||||
vc-zlib-dll: $(VC)
|
||||
cd lib
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib-dll
|
||||
cd ..\src
|
||||
nmake /f Makefile.$(VC) cfg=release-zlib-dll
|
||||
vc-x64:
|
||||
cd winbuild
|
||||
nmake /f Makefile.vc MACHINE=x64
|
||||
|
||||
djgpp:
|
||||
$(MAKE) -C lib -f Makefile.dj
|
||||
@ -497,75 +118,6 @@ linux: all
|
||||
|
||||
linux-ssl: ssl
|
||||
|
||||
# We don't need to do anything for vc6.
|
||||
vc6:
|
||||
|
||||
# VC7 makefiles are for use with VS.NET and VS.NET 2003
|
||||
vc7: lib/Makefile.vc7 src/Makefile.vc7
|
||||
|
||||
lib/Makefile.vc7: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s/VC6/VC7/g" lib/Makefile.vc6 > lib/Makefile.vc7
|
||||
|
||||
src/Makefile.vc7: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s/VC6/VC7/g" src/Makefile.vc6 > src/Makefile.vc7
|
||||
|
||||
# VC8 makefiles are for use with VS2005
|
||||
vc8: lib/Makefile.vc8 src/Makefile.vc8
|
||||
|
||||
lib/Makefile.vc8: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" lib/Makefile.vc6 > lib/Makefile.vc8
|
||||
|
||||
src/Makefile.vc8: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" src/Makefile.vc6 > src/Makefile.vc8
|
||||
|
||||
# VC9 makefiles are for use with VS2008
|
||||
vc9: lib/Makefile.vc9 src/Makefile.vc9
|
||||
|
||||
lib/Makefile.vc9: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" lib/Makefile.vc6 > lib/Makefile.vc9
|
||||
|
||||
src/Makefile.vc9: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" src/Makefile.vc6 > src/Makefile.vc9
|
||||
|
||||
# VC10 makefiles are for use with VS2010
|
||||
vc10: lib/Makefile.vc10 src/Makefile.vc10
|
||||
|
||||
lib/Makefile.vc10: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc10/g" -e "s/VC6/VC10/g" lib/Makefile.vc6 > lib/Makefile.vc10
|
||||
|
||||
src/Makefile.vc10: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc10/g" -e "s/VC6/VC10/g" src/Makefile.vc6 > src/Makefile.vc10
|
||||
|
||||
# VC11 makefiles are for use with VS2012
|
||||
vc11: lib/Makefile.vc11 src/Makefile.vc11
|
||||
|
||||
lib/Makefile.vc11: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc11/g" -e "s/VC6/VC11/g" lib/Makefile.vc6 > lib/Makefile.vc11
|
||||
|
||||
src/Makefile.vc11: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc11/g" -e "s/VC6/VC11/g" src/Makefile.vc6 > src/Makefile.vc11
|
||||
|
||||
# VC12 makefiles are for use with VS2013
|
||||
vc12: lib/Makefile.vc12 src/Makefile.vc12
|
||||
|
||||
lib/Makefile.vc12: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" lib/Makefile.vc6 > lib/Makefile.vc12
|
||||
|
||||
src/Makefile.vc12: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" src/Makefile.vc6 > src/Makefile.vc12
|
||||
|
||||
ca-bundle: lib/mk-ca-bundle.pl
|
||||
@echo "generate a fresh ca-bundle.crt"
|
||||
@perl $< -b -l -u lib/ca-bundle.crt
|
||||
|
281
curl/Makefile.am
281
curl/Makefile.am
@ -5,11 +5,11 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
# 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
|
||||
@ -24,112 +24,151 @@ AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
|
||||
CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
|
||||
CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
|
||||
include/curl/curlbuild.h.cmake CMake/Macros.cmake
|
||||
CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in \
|
||||
CMake/CurlTests.c CMake/FindGSS.cmake CMake/OtherTests.cmake \
|
||||
CMake/Platforms/WindowsCache.cmake CMake/Utilities.cmake \
|
||||
CMake/Macros.cmake \
|
||||
CMake/CurlSymbolHiding.cmake CMake/FindCARES.cmake \
|
||||
CMake/FindLibSSH2.cmake CMake/FindNGHTTP2.cmake \
|
||||
CMake/FindMbedTLS.cmake CMake/cmake_uninstall.cmake.in \
|
||||
CMake/curl-config.cmake.in
|
||||
|
||||
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/curlsrc.tmpl
|
||||
VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp.dist
|
||||
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/curlsrc.tmpl
|
||||
VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj.dist
|
||||
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/curlsrc.tmpl
|
||||
VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj.dist
|
||||
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/curlsrc.tmpl
|
||||
VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj.dist
|
||||
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/curlsrc.tmpl
|
||||
VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj.dist
|
||||
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
|
||||
VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl
|
||||
VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj.dist
|
||||
VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl
|
||||
VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist
|
||||
VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc
|
||||
|
||||
VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl
|
||||
VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist
|
||||
VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc
|
||||
VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl
|
||||
VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj.dist
|
||||
VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl
|
||||
VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist
|
||||
VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc
|
||||
|
||||
VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl
|
||||
VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist
|
||||
VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc
|
||||
VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl
|
||||
VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj.dist
|
||||
VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl
|
||||
VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist
|
||||
VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc
|
||||
|
||||
VC_DIST = projects/README \
|
||||
projects/build-openssl.bat \
|
||||
projects/checksrc.bat \
|
||||
projects/Windows/VC6/curl-all.dsw \
|
||||
projects/Windows/VC6/lib/libcurl.dsw \
|
||||
projects/Windows/VC6/src/curlsrc.dsw \
|
||||
projects/Windows/VC7/curl-all.sln \
|
||||
projects/Windows/VC7/lib/libcurl.sln \
|
||||
projects/Windows/VC7/src/curlsrc.sln \
|
||||
projects/Windows/VC7.1/curl-all.sln \
|
||||
projects/Windows/VC7.1/lib/libcurl.sln \
|
||||
projects/Windows/VC7.1/src/curlsrc.sln \
|
||||
projects/Windows/VC8/curl-all.sln \
|
||||
projects/Windows/VC8/lib/libcurl.sln \
|
||||
projects/Windows/VC8/src/curlsrc.sln \
|
||||
projects/Windows/VC9/curl-all.sln \
|
||||
projects/Windows/VC9/lib/libcurl.sln \
|
||||
projects/Windows/VC9/src/curlsrc.sln \
|
||||
projects/Windows/VC10/curl-all.sln \
|
||||
projects/Windows/VC10/lib/libcurl.sln \
|
||||
projects/Windows/VC10/src/curlsrc.sln \
|
||||
projects/Windows/VC11/curl-all.sln \
|
||||
projects/Windows/VC11/lib/libcurl.sln \
|
||||
projects/Windows/VC11/src/curlsrc.sln \
|
||||
projects/Windows/VC12/curl-all.sln \
|
||||
projects/Windows/VC12/lib/libcurl.sln \
|
||||
projects/Windows/VC12/src/curlsrc.sln
|
||||
VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
|
||||
VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
|
||||
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
|
||||
|
||||
WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
|
||||
winbuild/MakefileBuild.vc winbuild/Makefile.vc \
|
||||
winbuild/Makefile.msvc.names
|
||||
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
|
||||
|
||||
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
|
||||
RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework scripts/zsh.pl \
|
||||
$(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) lib/libcurl.vers.in
|
||||
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 \
|
||||
projects/wolfssl_override.props
|
||||
|
||||
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)
|
||||
WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
|
||||
winbuild/MakefileBuild.vc winbuild/Makefile.vc
|
||||
|
||||
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) \
|
||||
lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
|
||||
|
||||
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)
|
||||
|
||||
bin_SCRIPTS = curl-config
|
||||
|
||||
SUBDIRS = lib src include
|
||||
DIST_SUBDIRS = $(SUBDIRS) tests packages docs
|
||||
SUBDIRS = lib src
|
||||
DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libcurl.pc
|
||||
@ -144,14 +183,14 @@ dist-hook:
|
||||
(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
|
||||
for file in $$distit; do \
|
||||
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
||||
cp $$file $(distdir)$$strip; \
|
||||
cp -p $$file $(distdir)$$strip; \
|
||||
done)
|
||||
|
||||
html:
|
||||
cd docs; make html
|
||||
cd docs && $(MAKE) html
|
||||
|
||||
pdf:
|
||||
cd docs; make pdf
|
||||
cd docs && $(MAKE) pdf
|
||||
|
||||
check: test examples check-docs
|
||||
|
||||
@ -170,9 +209,15 @@ test:
|
||||
test-full:
|
||||
@(cd tests; $(MAKE) all full-test)
|
||||
|
||||
test-nonflaky:
|
||||
@(cd tests; $(MAKE) all nonflaky-test)
|
||||
|
||||
test-torture:
|
||||
@(cd tests; $(MAKE) all torture-test)
|
||||
|
||||
test-event:
|
||||
@(cd tests; $(MAKE) all event-test)
|
||||
|
||||
test-am:
|
||||
@(cd tests; $(MAKE) all am-test)
|
||||
|
||||
@ -184,15 +229,6 @@ examples:
|
||||
check-docs:
|
||||
@(cd docs/libcurl; $(MAKE) check)
|
||||
|
||||
# This is a hook to have 'make clean' also clean up the docs and the tests
|
||||
# dir. The extra check for the Makefiles being present is necessary because
|
||||
# 'make distcheck' will make clean first in these directories _before_ it runs
|
||||
# this hook.
|
||||
clean-local:
|
||||
@(if test -f tests/Makefile; then cd tests; $(MAKE) clean; fi)
|
||||
@(if test -f docs/Makefile; then cd docs; $(MAKE) clean; fi)
|
||||
|
||||
#
|
||||
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
||||
# must contain the following line:
|
||||
# %_topdir /home/loic/local/rpm
|
||||
@ -227,10 +263,10 @@ rpm:
|
||||
# pkgadd -d ./HAXXcurl-*
|
||||
#
|
||||
|
||||
# gak - libtool requires an absoulte directory, hence the pwd below...
|
||||
# gak - libtool requires an absolute directory, hence the pwd below...
|
||||
pkgadd:
|
||||
umask 022 ; \
|
||||
make install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
|
||||
$(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
|
||||
cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
|
||||
cd $(srcdir)/packages/Solaris && $(MAKE) package
|
||||
|
||||
@ -244,11 +280,13 @@ cygwinbin:
|
||||
install-data-hook:
|
||||
cd include && $(MAKE) install
|
||||
cd docs && $(MAKE) install
|
||||
cd docs/libcurl && $(MAKE) install
|
||||
|
||||
# We extend the standard uninstall with a custom hook:
|
||||
uninstall-hook:
|
||||
cd include && $(MAKE) uninstall
|
||||
cd docs && $(MAKE) uninstall
|
||||
cd docs/libcurl && $(MAKE) uninstall
|
||||
|
||||
ca-bundle: lib/mk-ca-bundle.pl
|
||||
@echo "generating a fresh ca-bundle.crt"
|
||||
@ -261,18 +299,24 @@ ca-firefox: lib/firefox-db2pem.sh
|
||||
checksrc:
|
||||
cd lib && $(MAKE) checksrc
|
||||
cd src && $(MAKE) checksrc
|
||||
cd tests && $(MAKE) checksrc
|
||||
cd include/curl && $(MAKE) checksrc
|
||||
cd docs/examples && $(MAKE) 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) \
|
||||
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
|
||||
$(VC12_SRCVCXPROJ_DEPS)
|
||||
vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
|
||||
$(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS) \
|
||||
$(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
|
||||
$(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
|
||||
$(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
|
||||
$(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
|
||||
$(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
|
||||
@(win32_lib_srcs='$(LIB_CFILES)'; \
|
||||
win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
|
||||
win32_lib_rc='$(LIB_RCFILES)'; \
|
||||
win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
|
||||
win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
|
||||
win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
|
||||
win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
|
||||
win32_src_srcs='$(CURL_CFILES)'; \
|
||||
@ -283,6 +327,8 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
|
||||
\
|
||||
sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
|
||||
sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
|
||||
sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
|
||||
sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
|
||||
sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
|
||||
sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
|
||||
sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
|
||||
@ -293,10 +339,11 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
|
||||
awk_code='\
|
||||
function gen_element(type, dir, file)\
|
||||
{\
|
||||
sub(/vauth\//, "", file);\
|
||||
sub(/vtls\//, "", file);\
|
||||
\
|
||||
spaces=" ";\
|
||||
if(dir == "lib\\vtls")\
|
||||
if(dir == "lib\\vauth" || dir == "lib\\vtls")\
|
||||
tabs=" ";\
|
||||
else\
|
||||
tabs=" ";\
|
||||
@ -350,6 +397,14 @@ function gen_element(type, dir, file)\
|
||||
split(lib_rc, arr);\
|
||||
for(val in arr) gen_element(proj_type, "lib", arr[val]);\
|
||||
}\
|
||||
else if($$0 == "CURL_LIB_VAUTH_C_FILES") {\
|
||||
split(lib_vauth_srcs, arr);\
|
||||
for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
|
||||
}\
|
||||
else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
|
||||
split(lib_vauth_hdrs, arr);\
|
||||
for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
|
||||
}\
|
||||
else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
|
||||
split(lib_vtls_srcs, arr);\
|
||||
for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
|
||||
@ -393,6 +448,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
|
||||
@ -411,6 +468,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
|
||||
@ -429,6 +488,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
|
||||
@ -447,6 +508,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
|
||||
@ -465,6 +528,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
|
||||
@ -483,6 +548,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
|
||||
@ -501,6 +568,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
|
||||
@ -519,6 +588,8 @@ function gen_element(type, dir, file)\
|
||||
-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_vtls_srcs="$$sorted_lib_vtls_srcs" \
|
||||
-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
|
||||
"$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
|
||||
@ -530,4 +601,48 @@ function gen_element(type, dir, file)\
|
||||
-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)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
|
||||
\
|
||||
echo "generating '$(VC14_LIBVCXPROJ)'"; \
|
||||
awk -v proj_type=vcxproj \
|
||||
-v lib_srcs="$$sorted_lib_srcs" \
|
||||
-v lib_hdrs="$$sorted_lib_hdrs" \
|
||||
-v lib_rc="$$win32_lib_rc" \
|
||||
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
|
||||
-v lib_vauth_hdrs="$$sorted_lib_vauth_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; }; \
|
||||
\
|
||||
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)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
|
||||
\
|
||||
echo "generating '$(VC15_LIBVCXPROJ)'"; \
|
||||
awk -v proj_type=vcxproj \
|
||||
-v lib_srcs="$$sorted_lib_srcs" \
|
||||
-v lib_hdrs="$$sorted_lib_hdrs" \
|
||||
-v lib_rc="$$win32_lib_rc" \
|
||||
-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
|
||||
-v lib_vauth_hdrs="$$sorted_lib_vauth_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; }; \
|
||||
\
|
||||
echo "generating '$(VC15_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; };)
|
||||
|
||||
tidy:
|
||||
(cd src && $(MAKE) tidy)
|
||||
(cd lib && $(MAKE) tidy)
|
||||
|
619
curl/Makefile.in
619
curl/Makefile.in
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@ README
|
||||
CONTACT
|
||||
|
||||
If you have problems, questions, ideas or suggestions, please contact us
|
||||
by posting to a suitable mailing list. See http://curl.haxx.se/mail/
|
||||
by posting to a suitable mailing list. See https://curl.haxx.se/mail/
|
||||
|
||||
All contributors to the project are listed in the THANKS document.
|
||||
|
||||
@ -32,13 +32,13 @@ WEB SITE
|
||||
|
||||
Visit the curl web site for the latest news and downloads:
|
||||
|
||||
http://curl.haxx.se/
|
||||
https://curl.haxx.se/
|
||||
|
||||
GIT
|
||||
|
||||
To download the very latest source off the GIT server do this:
|
||||
|
||||
git clone https://github.com/bagder/curl.git
|
||||
git clone https://github.com/curl/curl.git
|
||||
|
||||
(you'll get a directory named curl created, filled with the source code)
|
||||
|
||||
|
@ -1,145 +1,253 @@
|
||||
Curl and libcurl 7.43.0
|
||||
curl and libcurl 7.64.1
|
||||
|
||||
Public curl releases: 147
|
||||
Command line options: 176
|
||||
curl_easy_setopt() options: 219
|
||||
Public functions in libcurl: 58
|
||||
Contributors: 1291
|
||||
Public curl releases: 180
|
||||
Command line options: 221
|
||||
curl_easy_setopt() options: 267
|
||||
Public functions in libcurl: 80
|
||||
Contributors: 1929
|
||||
|
||||
This release includes the following changes:
|
||||
|
||||
o Added CURLOPT_PROXY_SERVICE_NAME[11]
|
||||
o Added CURLOPT_SERVICE_NAME[12]
|
||||
o New curl option: --proxy-service-name[13]
|
||||
o Mew curl option: --service-name [14]
|
||||
o New curl option: --data-raw [5]
|
||||
o Added CURLOPT_PIPEWAIT [15]
|
||||
o Added support for multiplexing transfers using HTTP/2, enable this
|
||||
with the new CURLPIPE_MULTIPLEX bit for CURLMOPT_PIPELINING [16]
|
||||
o HTTP/2: requires nghttp2 1.0.0 or later
|
||||
o scripts: add zsh.pl for generating zsh completion
|
||||
o curl.h: add CURL_HTTP_VERSION_2
|
||||
o alt-svc: experiemental support added [74]
|
||||
o configure: add --with-amissl [84]
|
||||
|
||||
This release includes the following bugfixes:
|
||||
|
||||
o CVE-2015-3236: lingering HTTP credentials in connection re-use [30]
|
||||
o CVE-2015-3237: SMB send off unrelated memory contents [31]
|
||||
o nss: fix compilation failure with old versions of NSS [1]
|
||||
o curl_easy_getinfo.3: document 'internals' in CURLINFO_TLS_SESSION
|
||||
o schannel.c: Fix possible SEC_E_BUFFER_TOO_SMALL error
|
||||
o Curl_ossl_init: load builtin modules [2]
|
||||
o configure: follow-up fix for krb5-config [3]
|
||||
o sasl_sspi: Populate domain from the realm in the challenge [4]
|
||||
o netrc: support 'default' token
|
||||
o README: convert to UTF-8
|
||||
o cyassl: Implement public key pinning
|
||||
o nss: implement public key pinning for NSS backend
|
||||
o mingw build: add arch -m32/-m64 to LDFLAGS
|
||||
o schannel: Fix out of bounds array [6]
|
||||
o configure: remove autogenerated files by autoconf
|
||||
o configure: remove --automake from libtoolize call
|
||||
o acinclude.m4: fix shell test for default CA cert bundle/path
|
||||
o schannel: fix regression in schannel_recv [7]
|
||||
o openssl: skip trace outputs for ssl_ver == 0 [8]
|
||||
o gnutls: properly retrieve certificate status
|
||||
o netrc: Read in text mode when cygwin [9]
|
||||
o winbuild: Document the option used to statically link the CRT [10]
|
||||
o FTP: Make EPSV use the control IP address rather than the original host
|
||||
o FTP: fix dangling conn->ip_addr dereference on verbose EPSV
|
||||
o conncache: keep bundles on host+port bases, not only host names
|
||||
o runtests.pl: use 'h2c' now, no -14 anymore
|
||||
o curlver: introducing new version number (checking) macros
|
||||
o openssl: boringssl build brekage, use SSL_CTX_set_msg_callback [17]
|
||||
o CURLOPT_POSTFIELDS.3: correct variable names [18]
|
||||
o curl_easy_unescape.3: update RFC reference [19]
|
||||
o gnutls: don't fail on non-fatal alerts during handshake
|
||||
o testcurl.pl: allow source to be in an arbitrary directory
|
||||
o CURLOPT_HTTPPROXYTUNNEL.3: only works with a HTTP proxy
|
||||
o SSPI-error: Change SEC_E_ILLEGAL_MESSAGE description [20]
|
||||
o parse_proxy: switch off tunneling if non-HTTP proxy [21]
|
||||
o share_init: fix OOM crash
|
||||
o perl: remove subdir, not touched in 9 years
|
||||
o CURLOPT_COOKIELIST.3: Add example
|
||||
o CURLOPT_COOKIE.3: Explain that the cookies won't be modified [22]
|
||||
o CURLOPT_COOKIELIST.3: Explain Set-Cookie without a domain [23]
|
||||
o FAQ: How do I port libcurl to my OS?
|
||||
o openssl: Use TLS_client_method for OpenSSL 1.1.0+
|
||||
o HTTP-NTLM: fail auth on connection close instead of looping [24]
|
||||
o curl_setup: Add macros for FOPEN_READTEXT, FOPEN_WRITETEXT [25]
|
||||
o curl_getdate.3: update RFC reference
|
||||
o curl_multi_info_read.3: added example
|
||||
o curl_multi_perform.3: added example
|
||||
o curl_multi_timeout.3: added example
|
||||
o cookie: Stop exporting any-domain cookies [26]
|
||||
o openssl: remove dummy callback use from SSL_CTX_set_verify()
|
||||
o openssl: remove SSL_get_session()-using code
|
||||
o openssl: removed USERDATA_IN_PWD_CALLBACK kludge
|
||||
o openssl: removed error string #ifdef
|
||||
o openssl: Fix verification of server-sent legacy intermediates [27]
|
||||
o docs: man page indentation and syntax fixes
|
||||
o docs: Spelling fixes
|
||||
o fopen.c: fix a few compiler warnings
|
||||
o CURLOPT_OPENSOCKETFUNCTION: return error at once [28]
|
||||
o schannel: Add support for optional client certificates
|
||||
o build: Properly detect OpenSSL 1.0.2 when using configure
|
||||
o urldata: store POST size in state.infilesize too [29]
|
||||
o security:choose_mech remove dead code
|
||||
o rtsp_do: remove dead code
|
||||
o docs: many HTTP URIs changed to HTTPS
|
||||
o schannel: schannel_recv overhaul [32]
|
||||
o AppVeyor: add MinGW-w64 and classic Mingw builds [55]
|
||||
o AppVeyor: switch VS 2015 builds to VS 2017 image [49]
|
||||
o CURLU: fix NULL dereference when used over proxy [73]
|
||||
o Curl_easy: remove req.maxfd - never used! [58]
|
||||
o Curl_now: figure out windows version in win32_init: [11]
|
||||
o Curl_resolv: fix a gcc -Werror=maybe-uninitialized warning [20]
|
||||
o DoH: inherit some SSL options from user's easy handle [80]
|
||||
o Secure Transport: no more "darwinssl" [56]
|
||||
o Secure Transport: tvOS 11 is required for ALPN support [94]
|
||||
o cirrus: Added FreeBSD builds using Cirrus CI
|
||||
o cleanup: make local functions static [5]
|
||||
o cli tool: do not use mime.h private structures [27]
|
||||
o cmdline-opts/proxytunnel.d: the option tunnnels all protocols [83]
|
||||
o configure: add additional libraries to check for LDAP support [45]
|
||||
o configure: remove the unused fdopen macro [40]
|
||||
o configure: show features as well in the final summary [15]
|
||||
o conncache: use conn->data to know if a transfer owns it [95]
|
||||
o connection: never reuse CONNECT_ONLY connections [35]
|
||||
o connection_check: restore original conn->data after the check [14]
|
||||
o connection_check: set ->data to the transfer doing the check [3]
|
||||
o cookie: Add support for cookie prefixes [29]
|
||||
o cookies: dotless names can set cookies again [81]
|
||||
o cookies: fix NULL dereference if flushing cookies with no CookieInfo set [47]
|
||||
o curl.1: --user and --proxy-user are hidden from ps output [86]
|
||||
o curl.1: mark the argument to --cookie as <data|filename> [87]
|
||||
o curl.h: use __has_declspec_attribute for shared builds [52]
|
||||
o curl: display --version features sorted alphabetically [51]
|
||||
o curl: fix FreeBSD compiler warning in the --xattr code [2]
|
||||
o curl: remove MANUAL from -M output [38]
|
||||
o curl_easy_duphandle.3: clarify that a duped handle has no shares [64]
|
||||
o curl_multi_remove_handle.3: use at any time, just not from within callbacks
|
||||
o curl_url.3: this API is not experimental anymore
|
||||
o dns: release sharelock as soon as possible [1]
|
||||
o docs: update max-redirs.d phrasing [59]
|
||||
o easy: fix win32 init to work without CURL_GLOBAL_WIN32 [30]
|
||||
o examples/10-at-a-time.c: improve readability and simplify
|
||||
o examples/cacertinmem.c: use multiple certificates for loading CA-chain [54]
|
||||
o examples/crawler: Fix the Accept-Encoding setting
|
||||
o examples/ephiperfifo.c: various fixes [63]
|
||||
o examples/externalsocket: add missing close socket calls [78]
|
||||
o examples/http2-download: cleaned up
|
||||
o examples/http2-serverpush: add some sensible error checks [31]
|
||||
o examples/http2-upload: cleaned up
|
||||
o examples/httpcustomheader: Value stored to 'res' is never read
|
||||
o examples/postinmemory: Potential leak of memory pointed to by 'chunk.memory'
|
||||
o examples/sftpuploadresume: Value stored to 'result' is never read
|
||||
o examples: only include <curl/curl.h> [70]
|
||||
o examples: remove recursive calls to curl_multi_socket_action [42]
|
||||
o examples: remove superfluous null-pointer checks
|
||||
o file: fix "Checking if unsigned variable 'readcount' is less than zero." [90]
|
||||
o fnmatch: disable if FTP is disabled [25]
|
||||
o gnutls: remove call to deprecated gnutls_compression_get_name [66]
|
||||
o gopher: remove check for path == NULL [69]
|
||||
o gssapi: fix deprecated header warnings [16]
|
||||
o hostip: make create_hostcache_id avoid alloc + free [4]
|
||||
o http2: multi_connchanged() moved from multi.c, only used for h2 [21]
|
||||
o http2: verify :athority in push promise requests [37]
|
||||
o http: make adding a blank header thread-safe [33]
|
||||
o http: send payload when (proxy) authentication is done [89]
|
||||
o http: set state.infilesize when sending multipart formposts [57]
|
||||
o makefile: make checksrc and hugefile commands "silent" [85]
|
||||
o mbedtls: make it build even if MBEDTLS_VERSION_C isn't set [24]
|
||||
o mbedtls: release sessionid resources on error [28]
|
||||
o memdebug: log pointer before freeing its data [91]
|
||||
o memdebug: make debug-specific functions use curl_dbg_ prefix [82]
|
||||
o mime: put the boundary buffer into the curl_mime struct [18]
|
||||
o multi: call multi_done on connect timeouts, fixes CURLINFO_TOTAL_TIME [43]
|
||||
o multi: remove verbose "Expire in" ... messages [23]
|
||||
o multi: removed unused code for request retries [79]
|
||||
o multi: support verbose conncache closure handle [72]
|
||||
o negotiate: fix for HTTP POST with Negotiate [88]
|
||||
o openssl: add support for TLS ASYNC state [46]
|
||||
o openssl: if cert type is ENG and no key specified, key is ENG too [93]
|
||||
o pretransfer: don't strlen() POSTFIELDS set for GET requests [22]
|
||||
o rand: Fix a mismatch between comments in source and header [32]
|
||||
o runtests: detect "schannel" as an alias for "winssl" [50]
|
||||
o schannel: be quiet - remove verbose output [19]
|
||||
o schannel: close TLS before removing conn from cache [10]
|
||||
o schannel: support CALG_ECDH_EPHEM algorithm [44]
|
||||
o scripts/completion.pl: also generate fish completion file [67]
|
||||
o singlesocket: fix the 'sincebefore' placement [36]
|
||||
o source: fix two 'nread' may be used uninitialized warnings [68]
|
||||
o ssh: fix Condition '!status' is always true [60]
|
||||
o ssh: loop the state machine if not done and not blocking [71]
|
||||
o strerror: make the strerror function use local buffers [48]
|
||||
o system_win32: move win32_init here from easy.c [65]
|
||||
o test578: make it read data from the correct test
|
||||
o tests: Fixed XML validation errors in some test files
|
||||
o tests: add stderr comparison to the test suite [26]
|
||||
o tests: fix multiple may be used uninitialized warnings
|
||||
o threaded-resolver: shutdown the resolver thread without error message [61]
|
||||
o tool_cb_wrt: fix writing to Windows null device NUL [96]
|
||||
o tool_getpass: termios.h is present on AmigaOS 3, but no tcgetattr/tcsetattr [84]
|
||||
o tool_operate: build on AmigaOS [84]
|
||||
o tool_operate: fix typecheck warning [9]
|
||||
o transfer.c: do not compute length of undefined hex buffer
|
||||
o travis: add build using gnutls [75]
|
||||
o travis: add scan-build [13]
|
||||
o travis: bump the used wolfSSL version to 4.0.0 [92]
|
||||
o travis: enable valgrind for the iconv tests [12]
|
||||
o travis: use updated compiler versions: clang 7 and gcc 8 [77]
|
||||
o unit1307: require FTP support [17]
|
||||
o unit1651: survive curl_easy_init() fails
|
||||
o url/idnconvert: remove scan for <= 32 ascii values [6]
|
||||
o url: change conn shutdown order to ensure SOCKETFUNCTION callbacks [39]
|
||||
o urlapi: reduce variable scope, remove unreachable 'break' [7]
|
||||
o urldata: convert bools to bitfields and move to end [53]
|
||||
o urldata: simplify bytecounters [62]
|
||||
o urlglob: Argument with 'nonnull' attribute passed null
|
||||
o version.c: silent scan-build even when librtmp is not enabled
|
||||
o vtls: rename some of the SSL functions [84]
|
||||
o wolfssl: stop custom-adding curves [41]
|
||||
o x509asn1: "Dereference of null pointer"
|
||||
o x509asn1: cleanup and unify code layout [34]
|
||||
o zsh.pl: escape ':' character [8]
|
||||
o zsh.pl: update regex to better match curl -h output [8]
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
o see docs/KNOWN_BUGS (http://curl.haxx.se/docs/knownbugs.html)
|
||||
o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html)
|
||||
|
||||
This release would not have looked like this without help, code, reports and
|
||||
advice from friends like these:
|
||||
|
||||
Alessandro Ghedini, Alexander Dyagilev, Anders Bakken, Anthony Avina,
|
||||
Ashish Shukla, Bert Huijben, Brian Chrisman, Brian Prodoehl, Chris Araman,
|
||||
Dagobert Michelsen, Dan Fandrich, Daniel Melani, Daniel Stenberg,
|
||||
Dmitry Eremin-Solenikov, Drake Arconis, Egon Eckert, Frank Meier, Fred Stluka,
|
||||
Gisle Vanem, Grant Pannell, Isaac Boukris, Jens Rantil, Joel Depooter,
|
||||
Kamil Dudka, Linus Nielsen Feltzing, Linus Nielsen Feltzing Feltzing,
|
||||
Liviu Chircu, Marc Hoersken, Michael Osipov, Oren Souroujon, Orgad Shaneh,
|
||||
Patrick Monnerat, Patrick Rapin, Paul Howarth, Paul Oliver, Rafayel Mkrtchyan,
|
||||
Ray Satiro, Sean Boudreau, Tatsuhiro Tsujikawa, Tomas Tomecek, Viktor Szakáts,
|
||||
Ville Skyttä, Yehezkel Horowitz,
|
||||
(43 contributors)
|
||||
accountantM on github, Alessandro Ghedini, Andre Guibert de Bruet,
|
||||
Arnaud Rebillout, Bernd Mueller, Björn Stenberg, buzo-ffm on github,
|
||||
Chris Araman, Christian Schmitz, Chris Young, d912e3 on github, Dan Fandrich,
|
||||
Daniel Gustafsson, Daniel Lublin, Daniel Stenberg, David Garske,
|
||||
David Woodhouse, Dominik Hölzl, Don J Olmstead, Eric Curtin, Frank Gevaerts,
|
||||
Gisle Vanem, James Brown, Jan Alexander Steffens, jnbr on github,
|
||||
MAntoniak on github, Marcel Raad, Marc Schlatter, Matt McClure, Michael Felt,
|
||||
Michael Schmid, Michael Wallner, Michał Antoniak, nedres on github,
|
||||
nianxuejie on github, Nick Zitzmann, Nicolas Grekas, Patrick Monnerat,
|
||||
Paul Groke, Pavel Löbl, Ray Satiro, Renaud Allard, Romain Geissler,
|
||||
Sara Golemon, Simon Legner, tholin on github, Tim Rühsen, Volker Schmid,
|
||||
wesinator on github,
|
||||
(49 contributors)
|
||||
|
||||
Thanks! (and sorry if I forgot to mention someone)
|
||||
|
||||
References to bug reports and discussions on issues:
|
||||
|
||||
[1] = http://curl.haxx.se/mail/lib-2015-04/0095.html
|
||||
[2] = https://github.com/bagder/curl/pull/206
|
||||
[3] = https://github.com/bagder/curl/commit/5b668606527613179d0349f21b4ab0df2971e3d2#commitcomment-10473445
|
||||
[4] = https://github.com/bagder/curl/pull/141
|
||||
[5] = https://github.com/bagder/curl/issues/198
|
||||
[6] = http://curl.haxx.se/mail/lib-2015-04/0199.html
|
||||
[7] = https://github.com/bagder/curl/issues/244
|
||||
[8] = https://github.com/bagder/curl/issues/219
|
||||
[9] = https://github.com/bagder/curl/pull/258
|
||||
[10] = https://github.com/bagder/curl/issues/254
|
||||
[11] = http://curl.haxx.se/libcurl/c/CURLOPT_PROXY_SERVICE_NAME.html
|
||||
[12] = http://curl.haxx.se/libcurl/c/CURLOPT_SERVICE_NAME.html
|
||||
[13] = http://curl.haxx.se/docs/manpage.html#--proxy-service-name
|
||||
[14] = http://curl.haxx.se/docs/manpage.html#--service-name
|
||||
[15] = http://curl.haxx.se/libcurl/c/CURLOPT_PIPEWAIT.html
|
||||
[16] = http://curl.haxx.se/libcurl/c/CURLMOPT_PIPELINING.html
|
||||
[17] = https://github.com/bagder/curl/issues/275
|
||||
[18] = https://github.com/bagder/curl/issues/281
|
||||
[19] = https://github.com/bagder/curl/issues/282
|
||||
[20] = https://github.com/bagder/curl/issues/267
|
||||
[21] = http://curl.haxx.se/mail/lib-2015-05/0056.html
|
||||
[22] = http://curl.haxx.se/mail/lib-2015-05/0115.html
|
||||
[23] = http://curl.haxx.se/mail/lib-2015-05/0137.html
|
||||
[24] = https://github.com/bagder/curl/issues/256
|
||||
[25] = https://github.com/bagder/curl/pull/258#issuecomment-107093055
|
||||
[26] = https://github.com/bagder/curl/issues/292
|
||||
[27] = https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
|
||||
[28] = http://curl.haxx.se/mail/lib-2015-06/0047.html
|
||||
[29] = http://curl.haxx.se/mail/lib-2015-06/0019.html
|
||||
[30] = http://curl.haxx.se/docs/adv_20150617A.html
|
||||
[31] = http://curl.haxx.se/docs/adv_20150617B.html
|
||||
[32] = https://github.com/bagder/curl/issues/244
|
||||
[1] = https://curl.haxx.se/bug/?i=3516
|
||||
[2] = https://curl.haxx.se/bug/?i=3550
|
||||
[3] = https://curl.haxx.se/bug/?i=3541
|
||||
[4] = https://curl.haxx.se/bug/?i=3544
|
||||
[5] = https://curl.haxx.se/bug/?i=3538
|
||||
[6] = https://curl.haxx.se/bug/?i=3539
|
||||
[7] = https://curl.haxx.se/bug/?i=3540
|
||||
[8] = https://bugs.debian.org/921452
|
||||
[9] = https://curl.haxx.se/bug/?i=3534
|
||||
[10] = https://curl.haxx.se/bug/?i=3412
|
||||
[11] = https://curl.haxx.se/bug/?i=3572
|
||||
[12] = https://curl.haxx.se/bug/?i=3571
|
||||
[13] = https://curl.haxx.se/bug/?i=3564
|
||||
[14] = https://curl.haxx.se/bug/?i=3542
|
||||
[15] = https://curl.haxx.se/bug/?i=3569
|
||||
[16] = https://curl.haxx.se/bug/?i=3566
|
||||
[17] = https://curl.haxx.se/bug/?i=3565
|
||||
[18] = https://curl.haxx.se/bug/?i=3561
|
||||
[19] = https://curl.haxx.se/bug/?i=3552
|
||||
[20] = https://curl.haxx.se/bug/?i=3562
|
||||
[21] = https://curl.haxx.se/bug/?i=3557
|
||||
[22] = https://curl.haxx.se/bug/?i=3548
|
||||
[23] = https://curl.haxx.se/mail/archive-2019-02/0013.html
|
||||
[24] = https://curl.haxx.se/bug/?i=3553
|
||||
[25] = https://curl.haxx.se/bug/?i=3551
|
||||
[26] = https://curl.haxx.se/bug/?i=3536
|
||||
[27] = https://curl.haxx.se/bug/?i=3532
|
||||
[28] = https://curl.haxx.se/bug/?i=3574
|
||||
[29] = https://curl.haxx.se/bug/?i=3554
|
||||
[30] = https://curl.haxx.se/bug/?i=3313
|
||||
[31] = https://curl.haxx.se/bug/?i=3580
|
||||
[32] = https://curl.haxx.se/bug/?i=3584
|
||||
[33] = https://curl.haxx.se/bug/?i=3578
|
||||
[34] = https://curl.haxx.se/bug/?i=3582
|
||||
[35] = https://curl.haxx.se/mail/lib-2019-02/0064.html
|
||||
[36] = https://curl.haxx.se/bug/?i=3585
|
||||
[37] = https://curl.haxx.se/bug/?i=3577
|
||||
[38] = https://curl.haxx.se/bug/?i=3587
|
||||
[39] = https://curl.haxx.se/mail/lib-2019-02/0101.html
|
||||
[40] = https://curl.haxx.se/bug/?i=3600
|
||||
[41] = https://curl.haxx.se/bug/?i=3599
|
||||
[42] = https://curl.haxx.se/bug/?i=3537
|
||||
[43] = https://curl.haxx.se/bug/?i=3602
|
||||
[44] = https://curl.haxx.se/bug/?i=3608
|
||||
[45] = https://curl.haxx.se/bug/?i=3595
|
||||
[46] = https://curl.haxx.se/bug/?i=3591
|
||||
[47] = https://curl.haxx.se/bug/?i=3613
|
||||
[48] = https://curl.haxx.se/bug/?i=3612
|
||||
[49] = https://curl.haxx.se/bug/?i=3606
|
||||
[50] = https://curl.haxx.se/bug/?i=3609
|
||||
[51] = https://curl.haxx.se/bug/?i=3611
|
||||
[52] = https://curl.haxx.se/bug/?i=3616
|
||||
[53] = https://curl.haxx.se/bug/?i=3610
|
||||
[54] = https://curl.haxx.se/bug/?i=3421
|
||||
[55] = https://curl.haxx.se/bug/?i=3623
|
||||
[56] = https://curl.haxx.se/bug/?i=3619
|
||||
[57] = https://curl.haxx.se/mail/archive-2019-02/0023.html
|
||||
[58] = https://curl.haxx.se/bug/?i=3626
|
||||
[59] = https://curl.haxx.se/bug/?i=3631
|
||||
[60] = https://curl.haxx.se/bug/?i=3628
|
||||
[61] = https://curl.haxx.se/bug/?i=3629
|
||||
[62] = https://curl.haxx.se/bug/?i=3627
|
||||
[63] = https://curl.haxx.se/bug/?i=3632
|
||||
[64] = https://curl.haxx.se/bug/?i=3592
|
||||
[65] = https://curl.haxx.se/bug/?i=3625
|
||||
[66] = https://curl.haxx.se/bug/?i=3636
|
||||
[67] = https://curl.haxx.se/bug/?i=3545
|
||||
[68] = https://curl.haxx.se/bug/?i=3546
|
||||
[69] = https://curl.haxx.se/bug/?i=3617
|
||||
[70] = https://curl.haxx.se/bug/?i=3645
|
||||
[71] = https://curl.haxx.se/bug/?i=3506
|
||||
[72] = https://curl.haxx.se/bug/?i=3618
|
||||
[73] = https://curl.haxx.se/bug/?i=3641
|
||||
[74] = https://curl.haxx.se/bug/?i=3498
|
||||
[76] = https://curl.haxx.se/bug/?i=3637
|
||||
[77] = https://curl.haxx.se/bug/?i=3670
|
||||
[78] = https://curl.haxx.se/bug/?i=3663
|
||||
[79] = https://curl.haxx.se/bug/?i=3666
|
||||
[80] = https://curl.haxx.se/bug/?i=3660
|
||||
[81] = https://curl.haxx.se/bug/?i=3649
|
||||
[82] = https://curl.haxx.se/bug/?i=3656
|
||||
[83] = https://curl.haxx.se/bug/?i=3658
|
||||
[84] = https://curl.haxx.se/bug/?i=3677
|
||||
[85] = https://curl.haxx.se/bug/?i=3681
|
||||
[86] = https://curl.haxx.se/bug/?i=3680
|
||||
[87] = https://curl.haxx.se/bug/?i=3682
|
||||
[88] = https://curl.haxx.se/bug/?i=1261
|
||||
[89] = https://curl.haxx.se/bug/?i=2431
|
||||
[90] = https://curl.haxx.se/bug/?i=3672
|
||||
[91] = https://curl.haxx.se/bug/?i=3671
|
||||
[92] = https://curl.haxx.se/bug/?i=3697
|
||||
[93] = https://curl.haxx.se/bug/?i=3692
|
||||
[94] = https://curl.haxx.se/bug/?i=3689
|
||||
[95] = https://curl.haxx.se/bug/?i=3686
|
||||
[96] = https://github.com/curl/curl/issues/3175#issuecomment-439068724
|
||||
|
||||
|
1203
curl/acinclude.m4
1203
curl/acinclude.m4
File diff suppressed because it is too large
Load Diff
201
curl/aclocal.m4
vendored
201
curl/aclocal.m4
vendored
@ -1,6 +1,6 @@
|
||||
# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -20,7 +20,7 @@ You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||
|
||||
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.14'
|
||||
[am__api_version='1.16'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.14.1], [],
|
||||
m4_if([$1], [1.16.1], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.14.1])dnl
|
||||
[AM_AUTOMAKE_VERSION([1.16.1])dnl
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -332,13 +332,12 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
@ -346,49 +345,41 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
# Older Autoconf quotes --file arguments for eval, but not when files
|
||||
# are listed without --file. Let's play safe and only enable the eval
|
||||
# if we detect the quoting.
|
||||
case $CONFIG_FILES in
|
||||
*\'*) eval set x "$CONFIG_FILES" ;;
|
||||
*) set x $CONFIG_FILES ;;
|
||||
esac
|
||||
# TODO: see whether this extra hack can be removed once we start
|
||||
# requiring Autoconf 2.70 or later.
|
||||
AS_CASE([$CONFIG_FILES],
|
||||
[*\'*], [eval set x "$CONFIG_FILES"],
|
||||
[*], [set x $CONFIG_FILES])
|
||||
shift
|
||||
for mf
|
||||
# Used to flag and report bootstrapping failures.
|
||||
am_rc=0
|
||||
for am_mf
|
||||
do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named 'Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
||||
am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile which includes
|
||||
# dependency-tracking related rules and includes.
|
||||
# Grep'ing the whole file directly is not great: AIX grep has a line
|
||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
||||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||
# from the Makefile without running 'make'.
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "$am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||
# expansion.
|
||||
for file in `sed -n "
|
||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
|
||||
|| continue
|
||||
am_dirpart=`AS_DIRNAME(["$am_mf"])`
|
||||
am_filepart=`AS_BASENAME(["$am_mf"])`
|
||||
AM_RUN_LOG([cd "$am_dirpart" \
|
||||
&& sed -e '/# am--include-marker/d' "$am_filepart" \
|
||||
| $MAKE -f - am--depfiles]) || am_rc=$?
|
||||
done
|
||||
if test $am_rc -ne 0; then
|
||||
AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
|
||||
for automatic dependency tracking. Try re-running configure with the
|
||||
'--disable-dependency-tracking' option to at least be able to build
|
||||
the package (albeit without support for automatic dependency tracking).])
|
||||
fi
|
||||
AS_UNSET([am_dirpart])
|
||||
AS_UNSET([am_filepart])
|
||||
AS_UNSET([am_mf])
|
||||
AS_UNSET([am_rc])
|
||||
rm -f conftest-deps.mk
|
||||
}
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
@ -397,18 +388,17 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each '.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
# This code is only required when automatic dependency tracking is enabled.
|
||||
# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
|
||||
# order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -495,11 +485,11 @@ AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
|
||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
# For better backward compatibility. To be removed once Automake 1.9.x
|
||||
# dies out for good. For more background, see:
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
|
||||
# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
|
||||
# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
|
||||
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
# We need awk for the "check" target (and possibly the TAP driver). The
|
||||
# system "awk" is bad on some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
@ -563,7 +553,7 @@ END
|
||||
Aborting the configuration process, to ensure you take notice of the issue.
|
||||
|
||||
You can download and install GNU coreutils to get an 'rm' implementation
|
||||
that behaves properly: <http://www.gnu.org/software/coreutils/>.
|
||||
that behaves properly: <https://www.gnu.org/software/coreutils/>.
|
||||
|
||||
If you want to complete the configuration process using your problematic
|
||||
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
|
||||
@ -573,6 +563,9 @@ END
|
||||
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
|
||||
fi
|
||||
fi
|
||||
dnl The trailing newline in this macro's definition is deliberate, for
|
||||
dnl backward compatibility and to allow trailing 'dnl'-style comments
|
||||
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
|
||||
])
|
||||
|
||||
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
||||
@ -602,7 +595,7 @@ for _am_header in $config_headers :; do
|
||||
done
|
||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -613,7 +606,7 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
if test x"${install_sh}" != xset; then
|
||||
if test x"${install_sh+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
*\ * | *\ *)
|
||||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
||||
@ -623,7 +616,7 @@ if test x"${install_sh}" != xset; then
|
||||
fi
|
||||
AC_SUBST([install_sh])])
|
||||
|
||||
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -645,7 +638,7 @@ AC_SUBST([am__leading_dot])])
|
||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||
# From Jim Meyering
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -680,7 +673,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -688,49 +681,42 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
# Check whether make has an 'include' directive that can support all
|
||||
# the idioms we need for our automatic dependency tracking code.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
|
||||
cat > confinc.mk << 'END'
|
||||
am__doit:
|
||||
@echo this is the am__doit target
|
||||
@echo this is the am__doit target >confinc.out
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# Ignore all kinds of additional output from 'make'.
|
||||
case `$am_make -s -f confmf 2> /dev/null` in #(
|
||||
*the\ am__doit\ target*)
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
;;
|
||||
esac
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
case `$am_make -s -f confmf 2> /dev/null` in #(
|
||||
*the\ am__doit\ target*)
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
# BSD make does it like this.
|
||||
echo '.include "confinc.mk" # ignored' > confmf.BSD
|
||||
# Other make implementations (GNU, Solaris 10, AIX) do it like this.
|
||||
echo 'include confinc.mk # ignored' > confmf.GNU
|
||||
_am_result=no
|
||||
for s in GNU BSD; do
|
||||
AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
|
||||
AS_CASE([$?:`cat confinc.out 2>/dev/null`],
|
||||
['0:this is the am__doit target'],
|
||||
[AS_CASE([$s],
|
||||
[BSD], [am__include='.include' am__quote='"'],
|
||||
[am__include='include' am__quote=''])])
|
||||
if test "$am__include" != "#"; then
|
||||
_am_result="yes ($s style)"
|
||||
break
|
||||
fi
|
||||
done
|
||||
rm -f confinc.* confmf.*
|
||||
AC_MSG_RESULT([${_am_result}])
|
||||
AC_SUBST([am__include])])
|
||||
AC_SUBST([am__quote])])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -769,7 +755,7 @@ fi
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -798,7 +784,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -845,7 +831,7 @@ AC_LANG_POP([C])])
|
||||
# For backward compatibility.
|
||||
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -864,7 +850,7 @@ AC_DEFUN([AM_RUN_LOG],
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -945,7 +931,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||
rm -f conftest.file
|
||||
])
|
||||
|
||||
# Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2009-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1005,7 +991,7 @@ AC_SUBST([AM_BACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
||||
])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1033,7 +1019,7 @@ fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2006-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1052,7 +1038,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2004-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1183,6 +1169,7 @@ AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
||||
m4_include([m4/ax_compile_check_sizeof.m4])
|
||||
m4_include([m4/curl-compilers.m4])
|
||||
m4_include([m4/curl-confopts.m4])
|
||||
m4_include([m4/curl-functions.m4])
|
||||
|
@ -6,11 +6,11 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
# 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
|
||||
@ -255,7 +255,7 @@ echo "buildconf: libtoolize version $lt_version (ok)"
|
||||
#--------------------------------------------------------------------------
|
||||
# m4 check
|
||||
#
|
||||
m4=`(${M4:-m4} --version || ${M4:-gm4} --version) 2>/dev/null | head -n 1`;
|
||||
m4=`(${M4:-m4} --version 0<&- || ${M4:-gm4} --version) 2>/dev/null 0<&- | head -n 1`;
|
||||
m4_version=`echo $m4 | sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
|
||||
|
||||
if { echo $m4 | grep "GNU" >/dev/null 2>&1; } then
|
||||
@ -306,7 +306,6 @@ for fname in .deps \
|
||||
configure \
|
||||
configurehelp.pm \
|
||||
curl-config \
|
||||
curlbuild.h \
|
||||
depcomp \
|
||||
libcares.pc \
|
||||
libcurl.pc \
|
||||
|
317
curl/buildconf.bat
Normal file
317
curl/buildconf.bat
Normal file
@ -0,0 +1,317 @@
|
||||
@echo off
|
||||
rem ***************************************************************************
|
||||
rem * _ _ ____ _
|
||||
rem * Project ___| | | | _ \| |
|
||||
rem * / __| | | | |_) | |
|
||||
rem * | (__| |_| | _ <| |___
|
||||
rem * \___|\___/|_| \_\_____|
|
||||
rem *
|
||||
rem * Copyright (C) 1998 - 2017, 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
|
||||
rem * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
rem *
|
||||
rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
rem * copies of the Software, and permit persons to whom the Software is
|
||||
rem * furnished to do so, under the terms of the COPYING file.
|
||||
rem *
|
||||
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
rem * KIND, either express or implied.
|
||||
rem *
|
||||
rem ***************************************************************************
|
||||
|
||||
rem NOTES
|
||||
rem
|
||||
rem This batch file must be used to set up a git tree to build on systems where
|
||||
rem there is no autotools support (i.e. DOS and Windows).
|
||||
rem
|
||||
|
||||
:begin
|
||||
rem Set our variables
|
||||
if "%OS%" == "Windows_NT" setlocal
|
||||
set MODE=GENERATE
|
||||
|
||||
rem Switch to this batch file's directory
|
||||
cd /d "%~0\.." 1>NUL 2>&1
|
||||
|
||||
rem Check we are running from a curl git repository
|
||||
if not exist GIT-INFO goto norepo
|
||||
|
||||
rem Detect programs. HAVE_<PROGNAME>
|
||||
rem When not found the variable is set undefined. The undefined pattern
|
||||
rem allows for statements like "if not defined HAVE_PERL (command)"
|
||||
groff --version <NUL 1>NUL 2>&1
|
||||
if errorlevel 1 (set HAVE_GROFF=) else (set HAVE_GROFF=Y)
|
||||
nroff --version <NUL 1>NUL 2>&1
|
||||
if errorlevel 1 (set HAVE_NROFF=) else (set HAVE_NROFF=Y)
|
||||
perl --version <NUL 1>NUL 2>&1
|
||||
if errorlevel 1 (set HAVE_PERL=) else (set HAVE_PERL=Y)
|
||||
gzip --version <NUL 1>NUL 2>&1
|
||||
if errorlevel 1 (set HAVE_GZIP=) else (set HAVE_GZIP=Y)
|
||||
|
||||
:parseArgs
|
||||
if "%~1" == "" goto start
|
||||
|
||||
if /i "%~1" == "-clean" (
|
||||
set MODE=CLEAN
|
||||
) else if /i "%~1" == "-?" (
|
||||
goto syntax
|
||||
) else if /i "%~1" == "-h" (
|
||||
goto syntax
|
||||
) else if /i "%~1" == "-help" (
|
||||
goto syntax
|
||||
) else (
|
||||
goto unknown
|
||||
)
|
||||
|
||||
shift & goto parseArgs
|
||||
|
||||
:start
|
||||
if "%MODE%" == "GENERATE" (
|
||||
echo.
|
||||
echo Generating prerequisite files
|
||||
|
||||
call :generate
|
||||
if errorlevel 3 goto nogenhugehelp
|
||||
if errorlevel 2 goto nogenmakefile
|
||||
if errorlevel 1 goto warning
|
||||
|
||||
) else (
|
||||
echo.
|
||||
echo Removing prerequisite files
|
||||
|
||||
call :clean
|
||||
if errorlevel 2 goto nocleanhugehelp
|
||||
if errorlevel 1 goto nocleanmakefile
|
||||
)
|
||||
|
||||
goto success
|
||||
|
||||
rem Main generate function.
|
||||
rem
|
||||
rem Returns:
|
||||
rem
|
||||
rem 0 - success
|
||||
rem 1 - success with simplified tool_hugehelp.c
|
||||
rem 2 - failed to generate Makefile
|
||||
rem 3 - failed to generate tool_hugehelp.c
|
||||
rem
|
||||
:generate
|
||||
if "%OS%" == "Windows_NT" setlocal
|
||||
set BASIC_HUGEHELP=0
|
||||
|
||||
rem Create Makefile
|
||||
echo * %CD%\Makefile
|
||||
if exist Makefile.dist (
|
||||
copy /Y Makefile.dist Makefile 1>NUL 2>&1
|
||||
if errorlevel 1 (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 2
|
||||
)
|
||||
)
|
||||
|
||||
rem Create tool_hugehelp.c
|
||||
echo * %CD%\src\tool_hugehelp.c
|
||||
call :genHugeHelp
|
||||
if errorlevel 2 (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 3
|
||||
)
|
||||
if errorlevel 1 (
|
||||
set BASIC_HUGEHELP=1
|
||||
)
|
||||
cmd /c exit 0
|
||||
|
||||
rem Setup c-ares git tree
|
||||
if exist ares\buildconf.bat (
|
||||
echo.
|
||||
echo Configuring c-ares build environment
|
||||
cd ares
|
||||
call buildconf.bat
|
||||
cd ..
|
||||
)
|
||||
|
||||
if "%BASIC_HUGEHELP%" == "1" (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 0
|
||||
|
||||
rem Main clean function.
|
||||
rem
|
||||
rem Returns:
|
||||
rem
|
||||
rem 0 - success
|
||||
rem 1 - failed to clean Makefile
|
||||
rem 2 - failed to clean tool_hugehelp.c
|
||||
rem
|
||||
:clean
|
||||
rem Remove Makefile
|
||||
echo * %CD%\Makefile
|
||||
if exist Makefile (
|
||||
del Makefile 2>NUL
|
||||
if exist Makefile (
|
||||
exit /B 1
|
||||
)
|
||||
)
|
||||
|
||||
rem Remove tool_hugehelp.c
|
||||
echo * %CD%\src\tool_hugehelp.c
|
||||
if exist src\tool_hugehelp.c (
|
||||
del src\tool_hugehelp.c 2>NUL
|
||||
if exist src\tool_hugehelp.c (
|
||||
exit /B 2
|
||||
)
|
||||
)
|
||||
|
||||
exit /B
|
||||
|
||||
rem Function to generate src\tool_hugehelp.c
|
||||
rem
|
||||
rem Returns:
|
||||
rem
|
||||
rem 0 - full tool_hugehelp.c generated
|
||||
rem 1 - simplified tool_hugehelp.c
|
||||
rem 2 - failure
|
||||
rem
|
||||
:genHugeHelp
|
||||
if "%OS%" == "Windows_NT" setlocal
|
||||
set LC_ALL=C
|
||||
set ROFFCMD=
|
||||
set BASIC=1
|
||||
|
||||
if defined HAVE_PERL (
|
||||
if defined HAVE_GROFF (
|
||||
set ROFFCMD=groff -mtty-char -Tascii -P-c -man
|
||||
) else if defined HAVE_NROFF (
|
||||
set ROFFCMD=nroff -c -Tascii -man
|
||||
)
|
||||
)
|
||||
|
||||
if defined ROFFCMD (
|
||||
echo #include "tool_setup.h"> src\tool_hugehelp.c
|
||||
echo #include "tool_hugehelp.h">> src\tool_hugehelp.c
|
||||
|
||||
if defined HAVE_GZIP (
|
||||
echo #ifndef HAVE_LIBZ>> src\tool_hugehelp.c
|
||||
)
|
||||
|
||||
%ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl docs\MANUAL >> src\tool_hugehelp.c
|
||||
if defined HAVE_GZIP (
|
||||
echo #else>> src\tool_hugehelp.c
|
||||
%ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl -c docs\MANUAL >> src\tool_hugehelp.c
|
||||
echo #endif /^* HAVE_LIBZ ^*/>> src\tool_hugehelp.c
|
||||
)
|
||||
|
||||
set BASIC=0
|
||||
) else (
|
||||
if exist src\tool_hugehelp.c.cvs (
|
||||
copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1
|
||||
) else (
|
||||
echo #include "tool_setup.h"> src\tool_hugehelp.c
|
||||
echo #include "tool_hugehelp.hd">> src\tool_hugehelp.c
|
||||
echo.>> src\tool_hugehelp.c
|
||||
echo void hugehelp(void^)>> src\tool_hugehelp.c
|
||||
echo {>> src\tool_hugehelp.c
|
||||
echo #ifdef USE_MANUAL>> src\tool_hugehelp.c
|
||||
echo fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c
|
||||
echo #endif>> src\tool_hugehelp.c
|
||||
echo }>> src\tool_hugehelp.c
|
||||
)
|
||||
)
|
||||
|
||||
findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1
|
||||
if errorlevel 1 (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 2
|
||||
)
|
||||
|
||||
if "%BASIC%" == "1" (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 0
|
||||
|
||||
rem Function to clean-up local variables under DOS, Windows 3.x and
|
||||
rem Windows 9x as setlocal isn't available until Windows NT
|
||||
rem
|
||||
:dosCleanup
|
||||
set MODE=
|
||||
set HAVE_GROFF=
|
||||
set HAVE_NROFF=
|
||||
set HAVE_PERL=
|
||||
set HAVE_GZIP=
|
||||
set BASIC_HUGEHELP=
|
||||
set LC_ALL
|
||||
set ROFFCMD=
|
||||
set BASIC=
|
||||
|
||||
exit /B
|
||||
|
||||
:syntax
|
||||
rem Display the help
|
||||
echo.
|
||||
echo Usage: buildconf [-clean]
|
||||
echo.
|
||||
echo -clean - Removes the files
|
||||
goto error
|
||||
|
||||
:unknown
|
||||
echo.
|
||||
echo Error: Unknown argument '%1'
|
||||
goto error
|
||||
|
||||
:norepo
|
||||
echo.
|
||||
echo Error: This batch file should only be used with a curl git repository
|
||||
goto error
|
||||
|
||||
:nogenmakefile
|
||||
echo.
|
||||
echo Error: Unable to generate Makefile
|
||||
goto error
|
||||
|
||||
:nogenhugehelp
|
||||
echo.
|
||||
echo Error: Unable to generate src\tool_hugehelp.c
|
||||
goto error
|
||||
|
||||
:nocleanmakefile
|
||||
echo.
|
||||
echo Error: Unable to clean Makefile
|
||||
goto error
|
||||
|
||||
:nocleanhugehelp
|
||||
echo.
|
||||
echo Error: Unable to clean src\tool_hugehelp.c
|
||||
goto error
|
||||
|
||||
:warning
|
||||
echo.
|
||||
echo Warning: The curl manual could not be integrated in the source. This means when
|
||||
echo you build curl the manual will not be available (curl --man^). Integration of
|
||||
echo the manual is not required and a summary of the options will still be available
|
||||
echo (curl --help^). To integrate the manual your PATH is required to have
|
||||
echo groff/nroff, perl and optionally gzip for compression.
|
||||
goto success
|
||||
|
||||
:error
|
||||
if "%OS%" == "Windows_NT" (
|
||||
endlocal
|
||||
) else (
|
||||
call :dosCleanup
|
||||
)
|
||||
exit /B 1
|
||||
|
||||
:success
|
||||
if "%OS%" == "Windows_NT" (
|
||||
endlocal
|
||||
) else (
|
||||
call :dosCleanup
|
||||
)
|
||||
exit /B 0
|
13
curl/compile
13
curl/compile
@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
|
||||
# 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/>.
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
@ -255,7 +255,8 @@ EOF
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
|
||||
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
@ -339,9 +340,9 @@ exit $ret
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
|
692
curl/config.guess
vendored
692
curl/config.guess
vendored
File diff suppressed because it is too large
Load Diff
310
curl/config.sub
vendored
310
curl/config.sub
vendored
@ -1,8 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2014 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2018 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2014-09-11'
|
||||
timestamp='2018-02-22'
|
||||
|
||||
# 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
|
||||
@ -15,7 +15,7 @@ timestamp='2014-09-11'
|
||||
# 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/>.
|
||||
# along with this program; if not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
@ -25,7 +25,7 @@ timestamp='2014-09-11'
|
||||
# of the GNU General Public License, version 3 ("GPLv3").
|
||||
|
||||
|
||||
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
||||
# Please send patches to <config-patches@gnu.org>.
|
||||
#
|
||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||
# Supply the specified configuration type as an argument.
|
||||
@ -33,7 +33,7 @@ timestamp='2014-09-11'
|
||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||
|
||||
# You can get the latest version of this script from:
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
|
||||
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
@ -53,12 +53,11 @@ timestamp='2014-09-11'
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS
|
||||
$0 [OPTION] ALIAS
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||
|
||||
Canonicalize a configuration name.
|
||||
|
||||
Operation modes:
|
||||
Options:
|
||||
-h, --help print this help, then exit
|
||||
-t, --time-stamp print date of last modification, then exit
|
||||
-v, --version print version number, then exit
|
||||
@ -68,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2014 Free Software Foundation, Inc.
|
||||
Copyright 1992-2018 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."
|
||||
@ -95,7 +94,7 @@ while test $# -gt 0 ; do
|
||||
|
||||
*local*)
|
||||
# First pass through any local machine types.
|
||||
echo $1
|
||||
echo "$1"
|
||||
exit ;;
|
||||
|
||||
* )
|
||||
@ -113,24 +112,24 @@ 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/'`
|
||||
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* | \
|
||||
kopensolaris*-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/'`
|
||||
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/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
|
||||
;;
|
||||
*)
|
||||
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
||||
if [ $basic_machine != $1 ]
|
||||
then os=`echo $1 | sed 's/.*-/-/'`
|
||||
basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
|
||||
if [ "$basic_machine" != "$1" ]
|
||||
then os=`echo "$1" | sed 's/.*-/-/'`
|
||||
else os=; fi
|
||||
;;
|
||||
esac
|
||||
@ -179,44 +178,44 @@ case $os in
|
||||
;;
|
||||
-sco6)
|
||||
os=-sco5v6
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5)
|
||||
os=-sco3.2v5
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco4)
|
||||
os=-sco3.2v4
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
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/'`
|
||||
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/'`
|
||||
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/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-udk*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-isc)
|
||||
os=-isc2.2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
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/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-lynx*178)
|
||||
os=-lynxos178
|
||||
@ -228,10 +227,7 @@ case $os in
|
||||
os=-lynxos
|
||||
;;
|
||||
-ptx*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
|
||||
;;
|
||||
-windowsnt*)
|
||||
os=`echo $os | sed -e 's/windowsnt/winnt/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
|
||||
;;
|
||||
-psos*)
|
||||
os=-psos
|
||||
@ -255,15 +251,16 @@ case $basic_machine in
|
||||
| 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 \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
| e2k | epiphany \
|
||||
| fido | fr30 | frv | ft32 \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| i370 | i860 | i960 | ia16 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| k1om \
|
||||
| le32 | le64 \
|
||||
@ -299,13 +296,14 @@ case $basic_machine in
|
||||
| nios | nios2 | nios2eb | nios2el \
|
||||
| ns16k | ns32k \
|
||||
| open8 | or1k | or1knd | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| 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[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| 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 \
|
||||
@ -313,7 +311,8 @@ case $basic_machine in
|
||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||
| ubicom32 \
|
||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||
| we32k \
|
||||
| visium \
|
||||
| wasm32 \
|
||||
| x86 | xc16x | xstormy16 | xtensa \
|
||||
| z8k | z80)
|
||||
basic_machine=$basic_machine-unknown
|
||||
@ -327,11 +326,14 @@ case $basic_machine in
|
||||
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
|
||||
;;
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
|
||||
;;
|
||||
ms1)
|
||||
basic_machine=mt-unknown
|
||||
@ -360,7 +362,7 @@ case $basic_machine in
|
||||
;;
|
||||
# Object if more than one company name word.
|
||||
*-*-*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
# Recognize the basic CPU types with company name.
|
||||
@ -372,17 +374,18 @@ case $basic_machine in
|
||||
| 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-* \
|
||||
| elxsi-* \
|
||||
| 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-* | ia64-* \
|
||||
| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| k1om-* \
|
||||
| le32-* | le64-* \
|
||||
@ -423,13 +426,15 @@ case $basic_machine in
|
||||
| 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?-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
|
||||
| tahoe-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
| tile*-* \
|
||||
@ -437,6 +442,8 @@ case $basic_machine in
|
||||
| ubicom32-* \
|
||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||
| vax-* \
|
||||
| visium-* \
|
||||
| wasm32-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
@ -450,7 +457,7 @@ case $basic_machine in
|
||||
# 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-unknown
|
||||
basic_machine=i386-pc
|
||||
os=-bsd
|
||||
;;
|
||||
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
|
||||
@ -484,7 +491,7 @@ case $basic_machine in
|
||||
basic_machine=x86_64-pc
|
||||
;;
|
||||
amd64-*)
|
||||
basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
amdahl)
|
||||
basic_machine=580-amdahl
|
||||
@ -513,6 +520,9 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-aros
|
||||
;;
|
||||
asmjs)
|
||||
basic_machine=asmjs-unknown
|
||||
;;
|
||||
aux)
|
||||
basic_machine=m68k-apple
|
||||
os=-aux
|
||||
@ -526,7 +536,7 @@ case $basic_machine in
|
||||
os=-linux
|
||||
;;
|
||||
blackfin-*)
|
||||
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
bluegene*)
|
||||
@ -534,13 +544,13 @@ case $basic_machine in
|
||||
os=-cnk
|
||||
;;
|
||||
c54x-*)
|
||||
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c55x-*)
|
||||
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c6x-*)
|
||||
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c90)
|
||||
basic_machine=c90-cray
|
||||
@ -629,10 +639,18 @@ case $basic_machine in
|
||||
basic_machine=rs6000-bull
|
||||
os=-bosx
|
||||
;;
|
||||
dpx2* | dpx2*-bull)
|
||||
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
|
||||
@ -722,9 +740,6 @@ case $basic_machine in
|
||||
hp9k8[0-9][0-9] | hp8[0-9][0-9])
|
||||
basic_machine=hppa1.0-hp
|
||||
;;
|
||||
hppa-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
hppaosf)
|
||||
basic_machine=hppa1.1-hp
|
||||
os=-osf
|
||||
@ -737,26 +752,26 @@ case $basic_machine in
|
||||
basic_machine=i370-ibm
|
||||
;;
|
||||
i*86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
;;
|
||||
i*86v4*)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv4
|
||||
;;
|
||||
i*86v)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv
|
||||
;;
|
||||
i*86sol2)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-solaris2
|
||||
;;
|
||||
i386mach)
|
||||
basic_machine=i386-mach
|
||||
os=-mach
|
||||
;;
|
||||
i386-vsta | vsta)
|
||||
vsta)
|
||||
basic_machine=i386-unknown
|
||||
os=-vsta
|
||||
;;
|
||||
@ -774,17 +789,17 @@ case $basic_machine in
|
||||
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/^[^-]*-//'`
|
||||
basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
magnum | m3230)
|
||||
basic_machine=mips-mips
|
||||
os=-sysv
|
||||
@ -816,10 +831,10 @@ case $basic_machine in
|
||||
os=-mint
|
||||
;;
|
||||
mips3*-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
|
||||
basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
|
||||
;;
|
||||
mips3*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||
basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
|
||||
;;
|
||||
monitor)
|
||||
basic_machine=m68k-rom68k
|
||||
@ -838,7 +853,7 @@ case $basic_machine in
|
||||
os=-msdos
|
||||
;;
|
||||
ms1-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
basic_machine=i686-pc
|
||||
@ -880,7 +895,7 @@ case $basic_machine in
|
||||
basic_machine=v70-nec
|
||||
os=-sysv
|
||||
;;
|
||||
next | m*-next )
|
||||
next | m*-next)
|
||||
basic_machine=m68k-next
|
||||
case $os in
|
||||
-nextstep* )
|
||||
@ -925,6 +940,12 @@ case $basic_machine in
|
||||
nsr-tandem)
|
||||
basic_machine=nsr-tandem
|
||||
;;
|
||||
nsv-tandem)
|
||||
basic_machine=nsv-tandem
|
||||
;;
|
||||
nsx-tandem)
|
||||
basic_machine=nsx-tandem
|
||||
;;
|
||||
op50n-* | op60c-*)
|
||||
basic_machine=hppa1.1-oki
|
||||
os=-proelf
|
||||
@ -957,7 +978,7 @@ case $basic_machine in
|
||||
os=-linux
|
||||
;;
|
||||
parisc-*)
|
||||
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
pbd)
|
||||
@ -973,7 +994,7 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
;;
|
||||
pc98-*)
|
||||
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentium | p5 | k5 | k6 | nexgen | viac3)
|
||||
basic_machine=i586-pc
|
||||
@ -988,16 +1009,16 @@ case $basic_machine in
|
||||
basic_machine=i786-pc
|
||||
;;
|
||||
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentium4-*)
|
||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pn)
|
||||
basic_machine=pn-gould
|
||||
@ -1007,23 +1028,23 @@ case $basic_machine in
|
||||
ppc | ppcbe) basic_machine=powerpc-unknown
|
||||
;;
|
||||
ppc-* | ppcbe-*)
|
||||
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
ppcle | powerpclittle)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64) basic_machine=powerpc64-unknown
|
||||
;;
|
||||
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||
ppc64le | powerpc64little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
;;
|
||||
ppc64le-* | powerpc64little-*)
|
||||
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ps2)
|
||||
basic_machine=i386-ibm
|
||||
@ -1077,17 +1098,10 @@ case $basic_machine in
|
||||
sequent)
|
||||
basic_machine=i386-sequent
|
||||
;;
|
||||
sh)
|
||||
basic_machine=sh-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
sh5el)
|
||||
basic_machine=sh5le-unknown
|
||||
;;
|
||||
sh64)
|
||||
basic_machine=sh64-unknown
|
||||
;;
|
||||
sparclite-wrs | simso-wrs)
|
||||
simso-wrs)
|
||||
basic_machine=sparclite-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
@ -1106,7 +1120,7 @@ case $basic_machine in
|
||||
os=-sysv4
|
||||
;;
|
||||
strongarm-* | thumb-*)
|
||||
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
sun2)
|
||||
basic_machine=m68000-sun
|
||||
@ -1228,6 +1242,9 @@ case $basic_machine in
|
||||
basic_machine=hppa1.1-winbond
|
||||
os=-proelf
|
||||
;;
|
||||
x64)
|
||||
basic_machine=x86_64-pc
|
||||
;;
|
||||
xbox)
|
||||
basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
@ -1236,20 +1253,12 @@ case $basic_machine in
|
||||
basic_machine=xps100-honeywell
|
||||
;;
|
||||
xscale-* | xscalee[bl]-*)
|
||||
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
|
||||
basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
|
||||
;;
|
||||
ymp)
|
||||
basic_machine=ymp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
z8k-*-coff)
|
||||
basic_machine=z8k-unknown
|
||||
os=-sim
|
||||
;;
|
||||
z80-*-coff)
|
||||
basic_machine=z80-unknown
|
||||
os=-sim
|
||||
;;
|
||||
none)
|
||||
basic_machine=none-none
|
||||
os=-none
|
||||
@ -1278,10 +1287,6 @@ case $basic_machine in
|
||||
vax)
|
||||
basic_machine=vax-dec
|
||||
;;
|
||||
pdp10)
|
||||
# there are many clones, so DEC is not a safe bet
|
||||
basic_machine=pdp10-unknown
|
||||
;;
|
||||
pdp11)
|
||||
basic_machine=pdp11-dec
|
||||
;;
|
||||
@ -1291,9 +1296,6 @@ case $basic_machine in
|
||||
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
|
||||
basic_machine=sh-unknown
|
||||
;;
|
||||
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
basic_machine=cydra-cydrome
|
||||
;;
|
||||
@ -1313,7 +1315,7 @@ case $basic_machine in
|
||||
# Make sure to match an already-canonicalized machine name.
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@ -1321,10 +1323,10 @@ esac
|
||||
# Here we canonicalize certain aliases for manufacturers.
|
||||
case $basic_machine in
|
||||
*-digital*)
|
||||
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
|
||||
basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
|
||||
;;
|
||||
*-commodore*)
|
||||
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
|
||||
basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
@ -1335,8 +1337,8 @@ esac
|
||||
if [ x"$os" != x"" ]
|
||||
then
|
||||
case $os in
|
||||
# First match some system type aliases
|
||||
# that might get confused with valid system types.
|
||||
# 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
|
||||
@ -1347,45 +1349,48 @@ case $os in
|
||||
-solaris)
|
||||
os=-solaris2
|
||||
;;
|
||||
-svr4*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-unixware*)
|
||||
os=-sysv4.2uw
|
||||
;;
|
||||
-gnu/linux*)
|
||||
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
|
||||
;;
|
||||
# First accept the basic system types.
|
||||
# es1800 is here to avoid being matched by es* (a different OS)
|
||||
-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.
|
||||
# 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* \
|
||||
| -aos* | -aros* | -cloudabi* | -sortix* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* \
|
||||
| -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* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -morphos* | -superux* | -rtmk* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
|
||||
| -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*)
|
||||
@ -1402,12 +1407,12 @@ case $os in
|
||||
-nto*)
|
||||
os=`echo $os | sed -e 's|nto|nto-qnx|'`
|
||||
;;
|
||||
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
||||
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
|
||||
-sim | -xray | -os68k* | -v88r* \
|
||||
| -windows* | -osx | -abug | -netware* | -os9* \
|
||||
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
||||
;;
|
||||
-mac*)
|
||||
os=`echo $os | sed -e 's|mac|macos|'`
|
||||
os=`echo "$os" | sed -e 's|mac|macos|'`
|
||||
;;
|
||||
-linux-dietlibc)
|
||||
os=-linux-dietlibc
|
||||
@ -1416,10 +1421,10 @@ case $os in
|
||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||
;;
|
||||
-sunos5*)
|
||||
os=`echo $os | sed -e 's|sunos5|solaris2|'`
|
||||
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
|
||||
;;
|
||||
-sunos6*)
|
||||
os=`echo $os | sed -e 's|sunos6|solaris3|'`
|
||||
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
|
||||
;;
|
||||
-opened*)
|
||||
os=-openedition
|
||||
@ -1430,12 +1435,6 @@ case $os in
|
||||
-wince*)
|
||||
os=-wince
|
||||
;;
|
||||
-osfrose*)
|
||||
os=-osfrose
|
||||
;;
|
||||
-osf*)
|
||||
os=-osf
|
||||
;;
|
||||
-utek*)
|
||||
os=-bsd
|
||||
;;
|
||||
@ -1460,7 +1459,7 @@ case $os in
|
||||
-nova*)
|
||||
os=-rtmk-nova
|
||||
;;
|
||||
-ns2 )
|
||||
-ns2)
|
||||
os=-nextstep2
|
||||
;;
|
||||
-nsk*)
|
||||
@ -1482,7 +1481,7 @@ case $os in
|
||||
-oss*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-svr4)
|
||||
-svr4*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-svr3)
|
||||
@ -1497,32 +1496,38 @@ case $os in
|
||||
-ose*)
|
||||
os=-ose
|
||||
;;
|
||||
-es1800*)
|
||||
os=-ose
|
||||
;;
|
||||
-xenix)
|
||||
os=-xenix
|
||||
;;
|
||||
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||
os=-mint
|
||||
;;
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
-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
|
||||
arm*)
|
||||
os=-eabi
|
||||
;;
|
||||
*)
|
||||
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
|
||||
echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@ -1612,12 +1617,12 @@ case $basic_machine in
|
||||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
pru-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
*-haiku)
|
||||
os=-haiku
|
||||
;;
|
||||
*-ibm)
|
||||
os=-aix
|
||||
;;
|
||||
@ -1657,7 +1662,7 @@ case $basic_machine in
|
||||
m88k-omron*)
|
||||
os=-luna
|
||||
;;
|
||||
*-next )
|
||||
*-next)
|
||||
os=-nextstep
|
||||
;;
|
||||
*-sequent)
|
||||
@ -1672,9 +1677,6 @@ case $basic_machine in
|
||||
i370-*)
|
||||
os=-mvs
|
||||
;;
|
||||
*-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
*-gould)
|
||||
os=-sysv
|
||||
;;
|
||||
@ -1784,15 +1786,15 @@ case $basic_machine in
|
||||
vendor=stratus
|
||||
;;
|
||||
esac
|
||||
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
|
||||
basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
|
||||
;;
|
||||
esac
|
||||
|
||||
echo $basic_machine$os
|
||||
echo "$basic_machine$os"
|
||||
exit
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# eval: (add-hook 'write-file-functions 'time-stamp)
|
||||
# time-stamp-start: "timestamp='"
|
||||
# time-stamp-format: "%:y-%02m-%02d"
|
||||
# time-stamp-end: "'"
|
||||
|
10047
curl/configure
vendored
10047
curl/configure
vendored
File diff suppressed because it is too large
Load Diff
1534
curl/configure.ac
Normal file → Executable file
1534
curl/configure.ac
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -6,11 +6,11 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 2001 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 2001 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
# 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
|
||||
@ -44,6 +44,7 @@ Available values for OPTION include:
|
||||
--libs library linking information
|
||||
--prefix curl install prefix
|
||||
--protocols newline separated list of enabled protocols
|
||||
--ssl-backends output the SSL backends libcurl was built to support
|
||||
--static-libs static libcurl library linking information
|
||||
--version output version information
|
||||
--vernum output the version information as a number (hexadecimal)
|
||||
@ -106,17 +107,29 @@ while test $# -gt 0; do
|
||||
# when extracting the patch part we strip off everything after a
|
||||
# dash as that's used for things like version 1.2.3-CVS
|
||||
cpatch=`echo $checkfor | cut -d. -f3 | cut -d- -f1`
|
||||
checknum=`echo "$cmajor*256*256 + $cminor*256 + ${cpatch:-0}" | bc`
|
||||
numuppercase=`echo @VERSIONNUM@ | tr 'a-f' 'A-F'`
|
||||
nownum=`echo "obase=10; ibase=16; $numuppercase" | bc`
|
||||
|
||||
if test "$nownum" -ge "$checknum"; then
|
||||
# silent success
|
||||
exit 0
|
||||
else
|
||||
echo "requested version $checkfor is newer than existing @CURLVERSION@"
|
||||
exit 1
|
||||
vmajor=`echo @CURLVERSION@ | cut -d. -f1`
|
||||
vminor=`echo @CURLVERSION@ | cut -d. -f2`
|
||||
# when extracting the patch part we strip off everything after a
|
||||
# dash as that's used for things like version 1.2.3-CVS
|
||||
vpatch=`echo @CURLVERSION@ | cut -d. -f3 | cut -d- -f1`
|
||||
|
||||
if test "$vmajor" -gt "$cmajor"; then
|
||||
exit 0;
|
||||
fi
|
||||
if test "$vmajor" -eq "$cmajor"; then
|
||||
if test "$vminor" -gt "$cminor"; then
|
||||
exit 0
|
||||
fi
|
||||
if test "$vminor" -eq "$cminor"; then
|
||||
if test "$cpatch" -le "$vpatch"; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "requested version $checkfor is newer than existing @CURLVERSION@"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
--vernum)
|
||||
@ -129,15 +142,41 @@ while test $# -gt 0; do
|
||||
;;
|
||||
|
||||
--cflags)
|
||||
echo ""
|
||||
if test "X$cppflag_curl_staticlib" = "X-DCURL_STATICLIB"; then
|
||||
CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB "
|
||||
else
|
||||
CPPFLAG_CURL_STATICLIB=""
|
||||
fi
|
||||
if test "X@includedir@" = "X/usr/include"; then
|
||||
echo "$CPPFLAG_CURL_STATICLIB"
|
||||
else
|
||||
echo "${CPPFLAG_CURL_STATICLIB}-I@includedir@"
|
||||
fi
|
||||
;;
|
||||
|
||||
--libs)
|
||||
echo -lcurl
|
||||
if test "X@libdir@" != "X/usr/lib" -a "X@libdir@" != "X/usr/lib64"; then
|
||||
CURLLIBDIR="-L@libdir@ "
|
||||
else
|
||||
CURLLIBDIR=""
|
||||
fi
|
||||
if test "X@REQUIRE_LIB_DEPS@" = "Xyes"; then
|
||||
echo ${CURLLIBDIR}-lcurl @LIBCURL_LIBS@
|
||||
else
|
||||
echo ${CURLLIBDIR}-lcurl
|
||||
fi
|
||||
;;
|
||||
--ssl-backends)
|
||||
echo "@SSL_BACKENDS@"
|
||||
;;
|
||||
|
||||
--static-libs)
|
||||
echo ""
|
||||
if test "X@ENABLE_STATIC@" != "Xno" ; then
|
||||
echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@
|
||||
else
|
||||
echo "curl was built with static libraries disabled" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
--configure)
|
||||
|
10
curl/depcomp
10
curl/depcomp
@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2013-05-30.07; # UTC
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
|
||||
|
||||
# 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
|
||||
@ -16,7 +16,7 @@ scriptversion=2013-05-30.07; # UTC
|
||||
# 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/>.
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
@ -783,9 +783,9 @@ exit 0
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
|
59
curl/docs/ALTSVC.md
Normal file
59
curl/docs/ALTSVC.md
Normal file
@ -0,0 +1,59 @@
|
||||
# Alt-Svc
|
||||
|
||||
curl features **EXPERIMENTAL** support for the Alt-Svc: HTTP header.
|
||||
|
||||
## Experimental
|
||||
|
||||
Experimental support in curl means:
|
||||
|
||||
1. Experimental features are provided to allow users to try them out and
|
||||
provide feedback on functionality and API etc before they ship and get
|
||||
"carved in stone".
|
||||
2. You must enable the feature when invoking configure as otherwise curl will
|
||||
not be built with the feature present.
|
||||
3. We strongly advice against using this feature in production.
|
||||
4. **We reserve the right to change behavior** of the feature without sticking
|
||||
to our API/ABI rules as we do for regular features, as long as it is marked
|
||||
experimental.
|
||||
5. Experimental features are clearly marked so in documentation. Beware.
|
||||
|
||||
## Enable Alt-Svc in build
|
||||
|
||||
`./configure --enable-alt-svc`
|
||||
|
||||
## Standard
|
||||
|
||||
[RFC 7838](https://tools.ietf.org/html/rfc7838)
|
||||
|
||||
## What works
|
||||
|
||||
- read alt-svc file from disk
|
||||
- write alt-svc file from disk
|
||||
- parse `Alt-Svc:` response headers, including `ma`, `clear` and `persist`.
|
||||
- replaces old entries when new alternatives are received
|
||||
- unit tests to verify most of this functionality (test 1654)
|
||||
- act on `Alt-Svc:` response headers
|
||||
- build conditionally on `configure --enable-alt-svc` only, feature marked as
|
||||
**EXPERIMENTAL**
|
||||
- implement `CURLOPT_ALTSVC_CTRL`
|
||||
- implement `CURLOPT_ALTSVC`
|
||||
- document `CURLOPT_ALTSVC_CTRL`
|
||||
- document `CURLOPT_ALTSVC`
|
||||
- document `--alt-svc`
|
||||
- add `CURL_VERSION_ALTSVC`
|
||||
- make `curl -V` show 'alt-svc' as a feature if built-in
|
||||
- support `curl --alt-svc [file]` to enable caching, using that file
|
||||
- make `tests/runtests.pl` able to filter tests on the feature `alt-svc`
|
||||
- actually use the existing in-memory alt-svc cache for outgoing connections
|
||||
- alt-svc cache expiry
|
||||
- test 355 and 356 verify curl acting on Alt-Svc, received from header and
|
||||
loaded from cache. The latter needs a debug build since it enables Alt-Svc
|
||||
for plain HTTP.
|
||||
|
||||
## What is left
|
||||
|
||||
- handle multiple response headers, when one of them says `clear` (should
|
||||
override them all)
|
||||
- using `Age:` value for caching age as per spec
|
||||
- `CURLALTSVC_IMMEDIATELY` support
|
||||
- `CURLALTSVC_ALTUSED` support
|
@ -1,260 +0,0 @@
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
libcurl bindings
|
||||
|
||||
Creative people have written bindings or interfaces for various environments
|
||||
and programming languages. Using one of these allows you to take advantage of
|
||||
curl powers from within your favourite language or system.
|
||||
|
||||
This is a list of all known interfaces as of this writing.
|
||||
|
||||
The bindings listed below are not part of the curl/libcurl distribution
|
||||
archives, but must be downloaded and installed separately.
|
||||
|
||||
Ada95
|
||||
|
||||
Writtten by Andreas Almroth
|
||||
http://www.almroth.com/adacurl/index.html
|
||||
|
||||
Basic
|
||||
|
||||
ScriptBasic bindings to libcurl. Writtten by Peter Verhas
|
||||
http://scriptbasic.com/
|
||||
|
||||
C
|
||||
libcurl is a C library in itself!
|
||||
http://curl.haxx.se/libcurl/
|
||||
|
||||
C++
|
||||
|
||||
Written by Jean-Philippe Barrette-LaPierre
|
||||
http://curlpp.org/
|
||||
|
||||
Ch
|
||||
|
||||
Written by Stephen Nestinger and Jonathan Rogado
|
||||
http://chcurl.sourceforge.net/
|
||||
|
||||
Cocoa
|
||||
|
||||
BBHTTP: written by Bruno de Carvalho
|
||||
https://github.com/brunodecarvalho/BBHTTP
|
||||
|
||||
curlhandle: Written by Dan Wood
|
||||
http://curlhandle.sourceforge.net/
|
||||
|
||||
D
|
||||
|
||||
Written by Kenneth Bogert
|
||||
http://dlang.org/library/std/net/curl.html
|
||||
|
||||
Dylan
|
||||
|
||||
Written by Chris Double
|
||||
http://dylanlibs.sourceforge.net/
|
||||
|
||||
Eiffel
|
||||
|
||||
Written by Eiffel Software
|
||||
https://room.eiffel.com/library/curl
|
||||
|
||||
Euphoria
|
||||
|
||||
Written by Ray Smith
|
||||
http://rays-web.com/eulibcurl.htm
|
||||
|
||||
Falcon
|
||||
|
||||
http://www.falconpl.org/index.ftd?page_id=prjs&prj_id=curl
|
||||
|
||||
Ferite
|
||||
|
||||
Written by Paul Querna
|
||||
http://www.ferite.org/
|
||||
|
||||
Gambas
|
||||
|
||||
http://gambas.sourceforge.net/
|
||||
|
||||
glib/GTK+
|
||||
|
||||
Written by Richard Atterer
|
||||
http://atterer.net/glibcurl/
|
||||
|
||||
Guile:
|
||||
|
||||
Written by Michael L. Gran
|
||||
http://www.lonelycactus.com/guile-curl.html
|
||||
|
||||
Harbour
|
||||
|
||||
Written by Viktor Szakáts
|
||||
https://github.com/vszakats/harbour-core/tree/master/contrib/hbcurl
|
||||
|
||||
Haskell
|
||||
|
||||
Written by Galois, Inc
|
||||
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl
|
||||
|
||||
Java
|
||||
|
||||
https://github.com/pjlegato/curl-java
|
||||
|
||||
Julia
|
||||
|
||||
Written by Paul Howe
|
||||
https://github.com/forio/Curl.jl
|
||||
|
||||
Lisp
|
||||
|
||||
Written by Liam Healy
|
||||
http://common-lisp.net/project/cl-curl/
|
||||
|
||||
Lua
|
||||
|
||||
luacurl by Alexander Marinov
|
||||
http://luacurl.luaforge.net/
|
||||
|
||||
Lua-cURL by Jürgen Hötzel
|
||||
http://luaforge.net/projects/lua-curl/
|
||||
|
||||
Mono
|
||||
|
||||
Written by Jeffrey Phillips
|
||||
http://forge.novell.com/modules/xfmod/project/?libcurl-mono
|
||||
|
||||
.NET
|
||||
|
||||
libcurl-net by Jeffrey Phillips
|
||||
https://sourceforge.net/projects/libcurl-net/
|
||||
|
||||
node.js
|
||||
|
||||
node-libcurl by Jonathan Cardoso Machado
|
||||
https://github.com/JCMais/node-libcurl
|
||||
|
||||
Object-Pascal
|
||||
|
||||
Free Pascal, Delphi and Kylix binding written by Christophe Espern.
|
||||
http://www.tekool.com/opcurl
|
||||
|
||||
O'Caml
|
||||
|
||||
Written by Lars Nilsson
|
||||
https://sourceforge.net/projects/ocurl/
|
||||
|
||||
Pascal
|
||||
|
||||
Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.
|
||||
http://houston.quik.com/jkp/curlpas/
|
||||
|
||||
Perl
|
||||
|
||||
Maintained by Cris Bailiff and Bálint Szilakszi
|
||||
https://github.com/szbalint/WWW--Curl
|
||||
|
||||
PHP
|
||||
|
||||
Written by Sterling Hughes
|
||||
https://php.net/curl
|
||||
|
||||
PostgreSQL
|
||||
|
||||
Written by Gian Paolo Ciceri
|
||||
http://gborg.postgresql.org/project/pgcurl/projdisplay.php
|
||||
|
||||
Python
|
||||
|
||||
PycURL by Kjetil Jacobsen
|
||||
http://pycurl.sourceforge.net/
|
||||
|
||||
R
|
||||
|
||||
http://cran.r-project.org/package=curl
|
||||
|
||||
Rexx
|
||||
|
||||
Written Mark Hessling
|
||||
http://rexxcurl.sourceforge.net/
|
||||
|
||||
RPG
|
||||
|
||||
Support for ILE/RPG on OS/400 is included in source distribution
|
||||
http://curl.haxx.se/libcurl/
|
||||
See packages/OS400/README.OS400 and packages/OS400/curl.inc.in
|
||||
|
||||
Ruby
|
||||
|
||||
curb - written by Ross Bamford
|
||||
http://curb.rubyforge.org/
|
||||
|
||||
ruby-curl-multi - written by Kristjan Petursson and Keith Rarick
|
||||
http://curl-multi.rubyforge.org/
|
||||
|
||||
Rust
|
||||
|
||||
curl-rust - by Carl Lerche
|
||||
https://github.com/carllerche/curl-rust
|
||||
|
||||
Scheme
|
||||
|
||||
Bigloo binding by Kirill Lisovsky
|
||||
http://www.metapaper.net/lisovsky/web/curl/
|
||||
|
||||
S-Lang
|
||||
|
||||
S-Lang binding by John E Davis
|
||||
http://www.jedsoft.org/slang/modules/curl.html
|
||||
|
||||
Smalltalk
|
||||
|
||||
Smalltalk binding by Danil Osipchuk
|
||||
http://www.squeaksource.com/CurlPlugin/
|
||||
|
||||
SP-Forth
|
||||
|
||||
SP-Forth binding by ygrek
|
||||
http://www.forth.org.ru/~ac/lib/lin/curl/
|
||||
|
||||
SPL
|
||||
|
||||
SPL binding by Clifford Wolf
|
||||
http://www.clifford.at/spl/
|
||||
|
||||
Tcl
|
||||
|
||||
Tclcurl by Andrés García
|
||||
http://mirror.yellow5.com/tclcurl/
|
||||
|
||||
Visual Basic
|
||||
|
||||
libcurl-vb by Jeffrey Phillips
|
||||
https://sourceforge.net/projects/libcurl-vb/
|
||||
|
||||
Visual Foxpro
|
||||
|
||||
by Carlos Alloatti
|
||||
http://www.ctl32.com.ar/libcurl.asp
|
||||
|
||||
Q
|
||||
The libcurl module is part of the default install
|
||||
http://q-lang.sourceforge.net/
|
||||
|
||||
wxWidgets
|
||||
|
||||
Written by Casey O'Donnell
|
||||
http://wxcode.sourceforge.net/components/wxcurl/
|
||||
|
||||
XBLite
|
||||
|
||||
Written by David Szafranski
|
||||
http://perso.wanadoo.fr/xblite/libraries.html
|
||||
|
||||
Xojo
|
||||
|
||||
Written by Andrew Lambert
|
||||
https://github.com/charonn0/RB-libcURL
|
118
curl/docs/BINDINGS.md
Normal file
118
curl/docs/BINDINGS.md
Normal file
@ -0,0 +1,118 @@
|
||||
libcurl bindings
|
||||
================
|
||||
|
||||
Creative people have written bindings or interfaces for various environments
|
||||
and programming languages. Using one of these allows you to take advantage of
|
||||
curl powers from within your favourite language or system.
|
||||
|
||||
This is a list of all known interfaces as of this writing.
|
||||
|
||||
The bindings listed below are not part of the curl/libcurl distribution
|
||||
archives, but must be downloaded and installed separately.
|
||||
|
||||
[Ada95](https://web.archive.org/web/20070403105909/www.almroth.com/adacurl/index.html) Written by Andreas Almroth
|
||||
|
||||
[Basic](http://scriptbasic.com/) ScriptBasic bindings written by Peter Verhas
|
||||
|
||||
C++: [curlpp](http://curlpp.org/) Written by Jean-Philippe Barrette-LaPierre,
|
||||
[curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++
|
||||
Requests](https://github.com/whoshuu/cpr) by Huu Nguyen
|
||||
|
||||
[Ch](https://chcurl.sourceforge.io/) Written by Stephen Nestinger and Jonathan Rogado
|
||||
|
||||
Cocoa: [BBHTTP](https://github.com/brunodecarvalho/BBHTTP) written by Bruno de Carvalho
|
||||
[curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood
|
||||
|
||||
[D](https://dlang.org/library/std/net/curl.html) Written by Kenneth Bogert
|
||||
|
||||
[Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev
|
||||
|
||||
[Dylan](https://dylanlibs.sourceforge.io/) Written by Chris Double
|
||||
|
||||
[Eiffel](https://room.eiffel.com/library/curl) Written by Eiffel Software
|
||||
|
||||
[Euphoria](https://web.archive.org/web/20050204080544/rays-web.com/eulibcurl.htm) Written by Ray Smith
|
||||
|
||||
[Falcon](http://www.falconpl.org/index.ftd?page_id=prjs&prj_id=curl)
|
||||
|
||||
[Ferite](https://web.archive.org/web/20150102192018/ferite.org/) Written by Paul Querna
|
||||
|
||||
[Gambas](https://gambas.sourceforge.io/)
|
||||
|
||||
[glib/GTK+](https://web.archive.org/web/20100526203452/atterer.net/glibcurl) Written by Richard Atterer
|
||||
|
||||
Go: [go-curl](https://github.com/andelf/go-curl) by ShuYu Wang
|
||||
|
||||
[Guile](http://www.lonelycactus.com/guile-curl.html) Written by Michael L. Gran
|
||||
|
||||
[Harbour](https://github.com/vszakats/harbour-core/tree/master/contrib/hbcurl) Written by Viktor Szakáts
|
||||
|
||||
[Haskell](https://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl) Written by Galois, Inc
|
||||
|
||||
[Java](https://github.com/pjlegato/curl-java)
|
||||
|
||||
[Julia](https://github.com/forio/Curl.jl) Written by Paul Howe
|
||||
|
||||
[Lisp](https://common-lisp.net/project/cl-curl/) Written by Liam Healy
|
||||
|
||||
Lua: [luacurl](http://luacurl.luaforge.net/) by Alexander Marinov, [Lua-cURL](https://github.com/Lua-cURL) by Jürgen Hötzel
|
||||
|
||||
[Mono](https://forge.novell.com/modules/xfmod/project/?libcurl-mono) Written by Jeffrey Phillips
|
||||
|
||||
[.NET](https://sourceforge.net/projects/libcurl-net/) libcurl-net by Jeffrey Phillips
|
||||
|
||||
[node.js](https://github.com/JCMais/node-libcurl) node-libcurl by Jonathan Cardoso Machado
|
||||
|
||||
[Object-Pascal](https://web.archive.org/web/20020610214926/www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern.
|
||||
|
||||
[OCaml](https://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek
|
||||
|
||||
[Pascal](https://web.archive.org/web/20030804091414/houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.
|
||||
|
||||
Perl: [WWW--Curl](https://github.com/szbalint/WWW--Curl) Maintained by Cris
|
||||
Bailiff and Bálint Szilakszi,
|
||||
[perl6-net-curl](https://github.com/azawawi/perl6-net-curl) by Ahmad M. Zawawi
|
||||
|
||||
[PHP](https://php.net/curl) Originally written by Sterling Hughes
|
||||
|
||||
[PostgreSQL](https://github.com/pramsey/pgsql-http) - HTTP client for PostgreSQL
|
||||
|
||||
[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen
|
||||
|
||||
[R](https://cran.r-project.org/package=curl)
|
||||
|
||||
[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling
|
||||
|
||||
[Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed
|
||||
|
||||
RPG, support for ILE/RPG on OS/400 is included in source distribution
|
||||
|
||||
Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford
|
||||
|
||||
[Rust](https://github.com/carllerche/curl-rust) curl-rust - by Carl Lerche
|
||||
|
||||
[Scheme](https://www.metapaper.net/lisovsky/web/curl/) Bigloo binding by Kirill Lisovsky
|
||||
|
||||
[Scilab](https://help.scilab.org/docs/current/fr_FR/getURL.html) binding by Sylvestre Ledru
|
||||
|
||||
[S-Lang](https://www.jedsoft.org/slang/modules/curl.html) by John E Davis
|
||||
|
||||
[Smalltalk](http://www.squeaksource.com/CurlPlugin/) Written by Danil Osipchuk
|
||||
|
||||
[SP-Forth](https://sourceforge.net/p/spf/spf/ci/master/tree/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov
|
||||
|
||||
[SPL](http://www.clifford.at/spl/) Written by Clifford Wolf
|
||||
|
||||
[Tcl](https://web.archive.org/web/20160826011806/mirror.yellow5.com/tclcurl/) Tclcurl by Andrés García
|
||||
|
||||
[Visual Basic](https://sourceforge.net/projects/libcurl-vb/) libcurl-vb by Jeffrey Phillips
|
||||
|
||||
[Visual Foxpro](https://web.archive.org/web/20130730181523/www.ctl32.com.ar/libcurl.asp) by Carlos Alloatti
|
||||
|
||||
[Q](https://q-lang.sourceforge.io/) The libcurl module is part of the default install
|
||||
|
||||
[wxWidgets](https://wxcode.sourceforge.io/components/wxcurl/) Written by Casey O'Donnell
|
||||
|
||||
[XBLite](https://web.archive.org/web/20060426150418/perso.wanadoo.fr/xblite/libraries.html) Written by David Szafranski
|
||||
|
||||
[Xojo](https://github.com/charonn0/RB-libcURL) Written by Andrew Lambert
|
185
curl/docs/BUGS
185
curl/docs/BUGS
@ -9,19 +9,30 @@ BUGS
|
||||
1. Bugs
|
||||
1.1 There are still bugs
|
||||
1.2 Where to report
|
||||
1.3 What to report
|
||||
1.4 libcurl problems
|
||||
1.5 Who will fix the problems
|
||||
1.6 How to get a stack trace
|
||||
1.7 Bugs in libcurl bindings
|
||||
1.3 Security bugs
|
||||
1.4 What to report
|
||||
1.5 libcurl problems
|
||||
1.6 Who will fix the problems
|
||||
1.7 How to get a stack trace
|
||||
1.8 Bugs in libcurl bindings
|
||||
1.9 Bugs in old versions
|
||||
|
||||
2. Bug fixing procedure
|
||||
2.1 What happens on first filing
|
||||
2.2 First response
|
||||
2.3 Not reproducible
|
||||
2.4 Unresponsive
|
||||
2.5 Lack of time/interest
|
||||
2.6 KNOWN_BUGS
|
||||
2.7 TODO
|
||||
2.8 Closing off stalled bugs
|
||||
|
||||
==============================================================================
|
||||
|
||||
1.1 There are still bugs
|
||||
|
||||
Curl and libcurl have grown substantially since the beginning. At the time
|
||||
of writing (January 2013), there are about 83,000 lines of source code, and
|
||||
by the time you read this it has probably grown even more.
|
||||
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.
|
||||
|
||||
Of course there are lots of bugs left. And lots of misfeatures.
|
||||
|
||||
@ -35,14 +46,31 @@ BUGS
|
||||
have a go at a solution. You can optionally also post your bug/problem at
|
||||
curl's bug tracking system over at
|
||||
|
||||
https://github.com/bagder/curl/issues
|
||||
https://github.com/curl/curl/issues
|
||||
|
||||
Please read the rest of this document below first before doing that!
|
||||
|
||||
If you feel you need to ask around first, find a suitable mailing list and
|
||||
post there. The lists are available on http://curl.haxx.se/mail/
|
||||
post there. The lists are available on https://curl.haxx.se/mail/
|
||||
|
||||
1.3 What to report
|
||||
1.3 Security bugs
|
||||
|
||||
If you find a bug or problem in curl or libcurl that you think has a
|
||||
security impact, for example a bug that can put users in danger or make them
|
||||
vulnerable if the bug becomes public knowledge, then please report that bug
|
||||
using our security development process.
|
||||
|
||||
Security related bugs or bugs that are suspected to have a security impact,
|
||||
should be reported by email to curl-security@haxx.se so that they first can
|
||||
be dealt with away from the public to minimize the harm and impact it will
|
||||
have on existing users out there who might be using the vulnerable versions.
|
||||
|
||||
The curl project's process for handling security related issues is
|
||||
documented here:
|
||||
|
||||
https://curl.haxx.se/dev/secprocess.html
|
||||
|
||||
1.4 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
|
||||
@ -74,9 +102,7 @@ BUGS
|
||||
The address and how to subscribe to the mailing lists are detailed in the
|
||||
MANUAL file.
|
||||
|
||||
1.4 libcurl problems
|
||||
|
||||
First, post all libcurl problems on the curl-library mailing list.
|
||||
1.5 libcurl problems
|
||||
|
||||
When you've written your own application with libcurl to perform transfers,
|
||||
it is even more important to be specific and detailed when reporting bugs.
|
||||
@ -96,7 +122,7 @@ BUGS
|
||||
valgrind or similar before you post memory-related or "crashing" problems to
|
||||
us.
|
||||
|
||||
1.5 Who will fix the problems
|
||||
1.6 Who will fix the problems
|
||||
|
||||
If the problems or bugs you describe are considered to be bugs, we want to
|
||||
have the problems fixed.
|
||||
@ -115,7 +141,7 @@ BUGS
|
||||
We get reports from many people every month and each report can take a
|
||||
considerable amount of time to really go to the bottom with.
|
||||
|
||||
1.6 How to get a stack trace
|
||||
1.7 How to get a stack trace
|
||||
|
||||
First, you must make sure that you compile all sources with -g and that you
|
||||
don't 'strip' the final executable. Try to avoid optimizing the code as
|
||||
@ -135,7 +161,7 @@ BUGS
|
||||
crashed. Include the stack trace with your detailed bug report. It'll help a
|
||||
lot.
|
||||
|
||||
1.7 Bugs in libcurl bindings
|
||||
1.8 Bugs in libcurl bindings
|
||||
|
||||
There will of course pop up bugs in libcurl bindings. You should then
|
||||
primarily approach the team that works on that particular binding and see
|
||||
@ -144,3 +170,128 @@ BUGS
|
||||
If you suspect that the problem exists in the underlying libcurl, then
|
||||
please convert your program over to plain C and follow the steps outlined
|
||||
above.
|
||||
|
||||
1.9 Bugs in old versions
|
||||
|
||||
The curl project typically releases new versions every other month, and we
|
||||
fix several hundred bugs per year. For a huge table of releases, number of
|
||||
bug fixes and more, see: https://curl.haxx.se/docs/releases.html
|
||||
|
||||
The developers in the curl project do not have bandwidth or energy enough to
|
||||
maintain several branches or to spend much time on hunting down problems in
|
||||
old versions when chances are we already fixed them or at least that they've
|
||||
changed nature and appearance in later versions.
|
||||
|
||||
When you experience a problem and want to report it, you really SHOULD
|
||||
include the version number of the curl you're using when you experience the
|
||||
issue. If that version number shows us that you're using an out-of-date
|
||||
curl, you should also try out a modern curl version to see if the problem
|
||||
persists or how/if it has changed in appearance.
|
||||
|
||||
Even if you cannot immediately upgrade your application/system to run the
|
||||
latest curl version, you can most often at least run a test version or
|
||||
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's fine, just don't count on
|
||||
us spending many cycles on trying to identify which single commit, if that's
|
||||
even possible, that at some point in the past fixed the problem you're now
|
||||
experiencing.
|
||||
|
||||
Security wise, it is almost always a bad idea to lag behind the current curl
|
||||
versions by a lot. We keeping discovering and reporting security problems
|
||||
over time see you can see in this table:
|
||||
https://curl.haxx.se/docs/vulnerabilities.html
|
||||
|
||||
2. Bug fixing procedure
|
||||
|
||||
2.1 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, maybe they're 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 to help categorize it.
|
||||
|
||||
2.2 First response
|
||||
|
||||
If your issue/bug report wasn't perfect at once (and few are), chances are
|
||||
that someone will ask follow-up questions. Which version did you use? Which
|
||||
options did you use? How often does the problem occur? How can we reproduce
|
||||
this problem? Which protocols does it involve? Or perhaps much more specific
|
||||
and deep diving questions. It all depends on your specific issue.
|
||||
|
||||
You should then respond to these follow-up questions and provide more info
|
||||
about the problem, so that we can help you figure it out. Or maybe you can
|
||||
help us figure it out. An active back-and-forth communication is important
|
||||
and the key for finding a cure and landing a fix.
|
||||
|
||||
2.3 Not reproducible
|
||||
|
||||
For problems that we can't reproduce and can't 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.
|
||||
|
||||
2.4 Unresponsive
|
||||
|
||||
If the problem haven't been understood or reproduced, and there's 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 not important.
|
||||
|
||||
Unimportant issues will be closed as inactive sooner or later as they can't
|
||||
be fixed. The inactivity period (waiting for responses) should not be
|
||||
shorter than two weeks but may extend months.
|
||||
|
||||
2.5 Lack of time/interest
|
||||
|
||||
Bugs that are filed and are understood can unfortunately end up in the
|
||||
"nobody cares enough about it to work on it" category. Such bugs are
|
||||
perfectly valid problems that *should* get fixed but apparently aren't. We
|
||||
try to mark such bugs as "KNOWN_BUGS material" after a time of inactivity
|
||||
and if no activity is noticed after yet some time those bugs are added to
|
||||
KNOWN_BUGS and are closed in the issue tracker.
|
||||
|
||||
2.6 KNOWN_BUGS
|
||||
|
||||
This is a list of known bugs. Bugs we know exist and that have been pointed
|
||||
out but that haven't yet been fixed. The reasons for why they haven't been
|
||||
fixed can involve anything really, but the primary reason is that nobody has
|
||||
considered these problems to be important enough to spend the necessary time
|
||||
and effort to have them fixed.
|
||||
|
||||
The KNOWN_BUGS are always up for grabs and we will always love the ones who
|
||||
bring one of them back to live and offers solutions to them.
|
||||
|
||||
The KNOWN_BUGS document has a sibling document known as TODO.
|
||||
|
||||
2.7 TODO
|
||||
|
||||
Issues that are filed or reported that aren't really bugs but more missing
|
||||
features or ideas for future improvements and so on are marked as
|
||||
'enhancement' or 'feature-request' and will be added to the TODO document
|
||||
instead and the issue is closed. We don't keep TODO items in the issue
|
||||
tracker.
|
||||
|
||||
The TODO document is full of ideas and suggestions of what we can add or fix
|
||||
one day. You're 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.
|
||||
|
||||
If the issue is rather a bug and not a missing feature or functionality, it
|
||||
is listed in KNOWN_BUGS instead.
|
||||
|
||||
2.8 Closing off stalled bugs
|
||||
|
||||
The issue and pull request trackers on https://github.com/curl/curl will
|
||||
only hold "active" entries (using a non-precise definition of what active
|
||||
actually is, but they're 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.
|
||||
|
||||
This way, we only have "active" issues open on github. Irrelevant issues and
|
||||
pull requests will not distract developers or casual visitors.
|
||||
|
162
curl/docs/CHECKSRC.md
Normal file
162
curl/docs/CHECKSRC.md
Normal file
@ -0,0 +1,162 @@
|
||||
# checksrc
|
||||
|
||||
This is the tool we use within the curl project to scan C source code and
|
||||
check that it adheres to our [Source Code Style guide](CODE_STYLE.md).
|
||||
|
||||
## Usage
|
||||
|
||||
checksrc.pl [options] [file1] [file2] ...
|
||||
|
||||
## Command line options
|
||||
|
||||
`-W[file]` whitelists that file and excludes 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?
|
||||
|
||||
checksrc does not check and verify the code against the entire style guide,
|
||||
but the script is instead 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 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
|
||||
warnings are:
|
||||
|
||||
- `ASSIGNWITHINCONDITION`: Assignment within a conditional expression. The
|
||||
code style mandates the assignment to be done outside of it.
|
||||
|
||||
- `ASTERISKNOSPACE`: A pointer was declared like `char* name` instead of the more
|
||||
appropriate `char *name` style. The asterisk should sit next to the name.
|
||||
|
||||
- `ASTERISKSPACE`: A pointer was declared like `char * name` instead of the
|
||||
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
|
||||
**Ignore certain warnings** section below for details.
|
||||
|
||||
- `BANNEDFUNC`: A banned function was used. The functions sprintf, vsprintf,
|
||||
strcat, strncat, gets are **never** allowed in curl source code.
|
||||
|
||||
- `BRACEELSE`: '} else' on the same line. The else is supposed to be on the
|
||||
following line.
|
||||
|
||||
- `BRACEPOS`: wrong position for an open brace (`{`).
|
||||
|
||||
- `COMMANOSPACE`: a comma without following space
|
||||
|
||||
- `COPYRIGHT`: the file is missing a copyright statement!
|
||||
|
||||
- `CPPCOMMENTS`: `//` comment detected, that's not C89 compliant
|
||||
|
||||
- `FOPENMODE`: `fopen()` needs a macro for the mode string, use it
|
||||
|
||||
- `INDENTATION`: detected a wrong start column for code. Note that this
|
||||
warning only checks some specific places and will certainly miss many bad
|
||||
indentations.
|
||||
|
||||
- `LONGLINE`: A line is longer than 79 columns.
|
||||
|
||||
- `MULTISPACE`: Multiple spaces were found where only one should be used.
|
||||
|
||||
- `NOSPACEEQUALS`: An equals sign was found without preceding space. We prefer
|
||||
`a = 2` and *not* `a=2`.
|
||||
|
||||
- `OPENCOMMENT`: File ended with a comment (`/*`) still "open".
|
||||
|
||||
- `PARENBRACE`: `){` was used without sufficient space in between.
|
||||
|
||||
- `RETURNNOSPACE`: `return` was used without space between the keyword and the
|
||||
following value.
|
||||
|
||||
- `SEMINOSPACE`: There was no space (or newline) following a semicolon.
|
||||
|
||||
- `SIZEOFNOPAREN`: Found use of sizeof without parentheses. We prefer
|
||||
`sizeof(int)` style.
|
||||
|
||||
- `SNPRINTF` - Found use of `snprintf()`. Since we use an internal replacement
|
||||
with a different return code etc, we prefer `msnprintf()`.
|
||||
|
||||
- `SPACEAFTERPAREN`: there was a space after open parenthesis, `( text`.
|
||||
|
||||
- `SPACEBEFORECLOSE`: there was a space before a close parenthesis, `text )`.
|
||||
|
||||
- `SPACEBEFORECOMMA`: there was a space before a comma, `one , two`.
|
||||
|
||||
- `SPACEBEFOREPAREN`: there was a space before an open parenthesis, `if (`,
|
||||
where one was not expected
|
||||
|
||||
- `SPACESEMICOLON`: there was a space before semicolon, ` ;`.
|
||||
|
||||
- `TABS`: TAB characters are not allowed!
|
||||
|
||||
- `TRAILINGSPACE`: Trailing white space on the line
|
||||
|
||||
- `UNUSEDIGNORE`: a checksrc inlined warning ignore was asked for but not used,
|
||||
that's an ignore that should be removed or changed to get used.
|
||||
|
||||
### Extended warnings
|
||||
|
||||
Some warnings are quite computationally expensive to perform, so they are
|
||||
turned off by default. To enable these warnings, place a `.checksrc` file in
|
||||
the directory where they should be activated with commands to enable the
|
||||
warnings you are interested in. The format of the file is to enable one
|
||||
warning per line like so: `enable <EXTENDEDWARNING>`
|
||||
|
||||
Currently there is one extended warning which can be enabled:
|
||||
|
||||
- `COPYRIGHTYEAR`: the current changeset hasn't updated the copyright year in
|
||||
the source file
|
||||
|
||||
## 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
|
||||
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.
|
||||
|
||||
Inline ignores are only done for that single specific source code file.
|
||||
|
||||
Example
|
||||
|
||||
/* !checksrc! disable LONGLINE all */
|
||||
|
||||
This will ignore the warning for overly long lines until it is re-enabled with:
|
||||
|
||||
/* !checksrc! enable LONGLINE */
|
||||
|
||||
If the enabling isn't performed before the end of the file, it will be enabled
|
||||
automatically for the next file.
|
||||
|
||||
You can also opt to ignore just N violations so that if you have a single long
|
||||
line you just can't shorten and is agreed to be fine anyway:
|
||||
|
||||
/* !checksrc! disable LONGLINE 1 */
|
||||
|
||||
... and the warning for long lines will be enabled again automatically after
|
||||
it has ignored that single warning. The number `1` can of course be changed to
|
||||
any other integer number. It can be used to make sure only the exact intended
|
||||
instances are ignored and nothing extra.
|
||||
|
||||
### Directory wide ignore patterns
|
||||
|
||||
This is a method we've transitioned away from. Use inline ignores as far as
|
||||
possible.
|
||||
|
||||
Make a `checksrc.whitelist` file in the directory of the source code with the
|
||||
false positive, and include the full offending line into this file.
|
499
curl/docs/CIPHERS.md
Normal file
499
curl/docs/CIPHERS.md
Normal file
@ -0,0 +1,499 @@
|
||||
# Ciphers
|
||||
|
||||
With curl's options
|
||||
[`CURLOPT_SSL_CIPHER_LIST`](https://curl.haxx.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
|
||||
and
|
||||
[`--ciphers`](https://curl.haxx.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 with options
|
||||
[`CURLOPT_TLS13_CIPHERS`](https://curl.haxx.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
|
||||
and
|
||||
[`--tls13-ciphers`](https://curl.haxx.se/docs/manpage.html#--tls13-ciphers)
|
||||
.
|
||||
|
||||
The names of the known ciphers differ depending on which TLS backend that
|
||||
libcurl was built to use. This is an attempt to list known cipher names.
|
||||
|
||||
## OpenSSL
|
||||
|
||||
(based on [OpenSSL docs](https://www.openssl.org/docs/man1.1.0/apps/ciphers.html))
|
||||
|
||||
When specifying multiple cipher names, separate them with colon (`:`).
|
||||
|
||||
### SSL3 cipher suites
|
||||
|
||||
`NULL-MD5`
|
||||
`NULL-SHA`
|
||||
`RC4-MD5`
|
||||
`RC4-SHA`
|
||||
`IDEA-CBC-SHA`
|
||||
`DES-CBC3-SHA`
|
||||
`DH-DSS-DES-CBC3-SHA`
|
||||
`DH-RSA-DES-CBC3-SHA`
|
||||
`DHE-DSS-DES-CBC3-SHA`
|
||||
`DHE-RSA-DES-CBC3-SHA`
|
||||
`ADH-RC4-MD5`
|
||||
`ADH-DES-CBC3-SHA`
|
||||
|
||||
### TLS v1.0 cipher suites
|
||||
|
||||
`NULL-MD5`
|
||||
`NULL-SHA`
|
||||
`RC4-MD5`
|
||||
`RC4-SHA`
|
||||
`IDEA-CBC-SHA`
|
||||
`DES-CBC3-SHA`
|
||||
`DHE-DSS-DES-CBC3-SHA`
|
||||
`DHE-RSA-DES-CBC3-SHA`
|
||||
`ADH-RC4-MD5`
|
||||
`ADH-DES-CBC3-SHA`
|
||||
|
||||
### AES ciphersuites from RFC3268, extending TLS v1.0
|
||||
|
||||
`AES128-SHA`
|
||||
`AES256-SHA`
|
||||
`DH-DSS-AES128-SHA`
|
||||
`DH-DSS-AES256-SHA`
|
||||
`DH-RSA-AES128-SHA`
|
||||
`DH-RSA-AES256-SHA`
|
||||
`DHE-DSS-AES128-SHA`
|
||||
`DHE-DSS-AES256-SHA`
|
||||
`DHE-RSA-AES128-SHA`
|
||||
`DHE-RSA-AES256-SHA`
|
||||
`ADH-AES128-SHA`
|
||||
`ADH-AES256-SHA`
|
||||
|
||||
### SEED ciphersuites from RFC4162, extending TLS v1.0
|
||||
|
||||
`SEED-SHA`
|
||||
`DH-DSS-SEED-SHA`
|
||||
`DH-RSA-SEED-SHA`
|
||||
`DHE-DSS-SEED-SHA`
|
||||
`DHE-RSA-SEED-SHA`
|
||||
`ADH-SEED-SHA`
|
||||
|
||||
### GOST ciphersuites, extending TLS v1.0
|
||||
|
||||
`GOST94-GOST89-GOST89`
|
||||
`GOST2001-GOST89-GOST89`
|
||||
`GOST94-NULL-GOST94`
|
||||
`GOST2001-NULL-GOST94`
|
||||
|
||||
### Elliptic curve cipher suites
|
||||
|
||||
`ECDHE-RSA-NULL-SHA`
|
||||
`ECDHE-RSA-RC4-SHA`
|
||||
`ECDHE-RSA-DES-CBC3-SHA`
|
||||
`ECDHE-RSA-AES128-SHA`
|
||||
`ECDHE-RSA-AES256-SHA`
|
||||
`ECDHE-ECDSA-NULL-SHA`
|
||||
`ECDHE-ECDSA-RC4-SHA`
|
||||
`ECDHE-ECDSA-DES-CBC3-SHA`
|
||||
`ECDHE-ECDSA-AES128-SHA`
|
||||
`ECDHE-ECDSA-AES256-SHA`
|
||||
`AECDH-NULL-SHA`
|
||||
`AECDH-RC4-SHA`
|
||||
`AECDH-DES-CBC3-SHA`
|
||||
`AECDH-AES128-SHA`
|
||||
`AECDH-AES256-SHA`
|
||||
|
||||
### TLS v1.2 cipher suites
|
||||
|
||||
`NULL-SHA256`
|
||||
`AES128-SHA256`
|
||||
`AES256-SHA256`
|
||||
`AES128-GCM-SHA256`
|
||||
`AES256-GCM-SHA384`
|
||||
`DH-RSA-AES128-SHA256`
|
||||
`DH-RSA-AES256-SHA256`
|
||||
`DH-RSA-AES128-GCM-SHA256`
|
||||
`DH-RSA-AES256-GCM-SHA384`
|
||||
`DH-DSS-AES128-SHA256`
|
||||
`DH-DSS-AES256-SHA256`
|
||||
`DH-DSS-AES128-GCM-SHA256`
|
||||
`DH-DSS-AES256-GCM-SHA384`
|
||||
`DHE-RSA-AES128-SHA256`
|
||||
`DHE-RSA-AES256-SHA256`
|
||||
`DHE-RSA-AES128-GCM-SHA256`
|
||||
`DHE-RSA-AES256-GCM-SHA384`
|
||||
`DHE-DSS-AES128-SHA256`
|
||||
`DHE-DSS-AES256-SHA256`
|
||||
`DHE-DSS-AES128-GCM-SHA256`
|
||||
`DHE-DSS-AES256-GCM-SHA384`
|
||||
`ECDHE-RSA-AES128-SHA256`
|
||||
`ECDHE-RSA-AES256-SHA384`
|
||||
`ECDHE-RSA-AES128-GCM-SHA256`
|
||||
`ECDHE-RSA-AES256-GCM-SHA384`
|
||||
`ECDHE-ECDSA-AES128-SHA256`
|
||||
`ECDHE-ECDSA-AES256-SHA384`
|
||||
`ECDHE-ECDSA-AES128-GCM-SHA256`
|
||||
`ECDHE-ECDSA-AES256-GCM-SHA384`
|
||||
`ADH-AES128-SHA256`
|
||||
`ADH-AES256-SHA256`
|
||||
`ADH-AES128-GCM-SHA256`
|
||||
`ADH-AES256-GCM-SHA384`
|
||||
`AES128-CCM`
|
||||
`AES256-CCM`
|
||||
`DHE-RSA-AES128-CCM`
|
||||
`DHE-RSA-AES256-CCM`
|
||||
`AES128-CCM8`
|
||||
`AES256-CCM8`
|
||||
`DHE-RSA-AES128-CCM8`
|
||||
`DHE-RSA-AES256-CCM8`
|
||||
`ECDHE-ECDSA-AES128-CCM`
|
||||
`ECDHE-ECDSA-AES256-CCM`
|
||||
`ECDHE-ECDSA-AES128-CCM8`
|
||||
`ECDHE-ECDSA-AES256-CCM8`
|
||||
|
||||
### Camellia HMAC-Based ciphersuites from RFC6367, extending TLS v1.2
|
||||
|
||||
`ECDHE-ECDSA-CAMELLIA128-SHA256`
|
||||
`ECDHE-ECDSA-CAMELLIA256-SHA384`
|
||||
`ECDHE-RSA-CAMELLIA128-SHA256`
|
||||
`ECDHE-RSA-CAMELLIA256-SHA384`
|
||||
|
||||
### TLS 1.3 cipher suites
|
||||
|
||||
(Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`)
|
||||
|
||||
`TLS_AES_256_GCM_SHA384`
|
||||
`TLS_CHACHA20_POLY1305_SHA256`
|
||||
`TLS_AES_128_GCM_SHA256`
|
||||
`TLS_AES_128_CCM_8_SHA256`
|
||||
`TLS_AES_128_CCM_SHA256`
|
||||
|
||||
## NSS
|
||||
|
||||
### Totally insecure
|
||||
|
||||
`rc4`
|
||||
`rc4-md5`
|
||||
`rc4export`
|
||||
`rc2`
|
||||
`rc2export`
|
||||
`des`
|
||||
`desede3`
|
||||
|
||||
### SSL3/TLS cipher suites
|
||||
|
||||
`rsa_rc4_128_md5`
|
||||
`rsa_rc4_128_sha`
|
||||
`rsa_3des_sha`
|
||||
`rsa_des_sha`
|
||||
`rsa_rc4_40_md5`
|
||||
`rsa_rc2_40_md5`
|
||||
`rsa_null_md5`
|
||||
`rsa_null_sha`
|
||||
`fips_3des_sha`
|
||||
`fips_des_sha`
|
||||
`fortezza`
|
||||
`fortezza_rc4_128_sha`
|
||||
`fortezza_null`
|
||||
|
||||
### TLS 1.0 Exportable 56-bit Cipher Suites
|
||||
|
||||
`rsa_des_56_sha`
|
||||
`rsa_rc4_56_sha`
|
||||
|
||||
### AES ciphers
|
||||
|
||||
`dhe_dss_aes_128_cbc_sha`
|
||||
`dhe_dss_aes_256_cbc_sha`
|
||||
`dhe_rsa_aes_128_cbc_sha`
|
||||
`dhe_rsa_aes_256_cbc_sha`
|
||||
`rsa_aes_128_sha`
|
||||
`rsa_aes_256_sha`
|
||||
|
||||
### ECC ciphers
|
||||
|
||||
`ecdh_ecdsa_null_sha`
|
||||
`ecdh_ecdsa_rc4_128_sha`
|
||||
`ecdh_ecdsa_3des_sha`
|
||||
`ecdh_ecdsa_aes_128_sha`
|
||||
`ecdh_ecdsa_aes_256_sha`
|
||||
`ecdhe_ecdsa_null_sha`
|
||||
`ecdhe_ecdsa_rc4_128_sha`
|
||||
`ecdhe_ecdsa_3des_sha`
|
||||
`ecdhe_ecdsa_aes_128_sha`
|
||||
`ecdhe_ecdsa_aes_256_sha`
|
||||
`ecdh_rsa_null_sha`
|
||||
`ecdh_rsa_128_sha`
|
||||
`ecdh_rsa_3des_sha`
|
||||
`ecdh_rsa_aes_128_sha`
|
||||
`ecdh_rsa_aes_256_sha`
|
||||
`ecdhe_rsa_null`
|
||||
`ecdhe_rsa_rc4_128_sha`
|
||||
`ecdhe_rsa_3des_sha`
|
||||
`ecdhe_rsa_aes_128_sha`
|
||||
`ecdhe_rsa_aes_256_sha`
|
||||
`ecdh_anon_null_sha`
|
||||
`ecdh_anon_rc4_128sha`
|
||||
`ecdh_anon_3des_sha`
|
||||
`ecdh_anon_aes_128_sha`
|
||||
`ecdh_anon_aes_256_sha`
|
||||
|
||||
### HMAC-SHA256 cipher suites
|
||||
|
||||
`rsa_null_sha_256`
|
||||
`rsa_aes_128_cbc_sha_256`
|
||||
`rsa_aes_256_cbc_sha_256`
|
||||
`dhe_rsa_aes_128_cbc_sha_256`
|
||||
`dhe_rsa_aes_256_cbc_sha_256`
|
||||
`ecdhe_ecdsa_aes_128_cbc_sha_256`
|
||||
`ecdhe_rsa_aes_128_cbc_sha_256`
|
||||
|
||||
### AES GCM cipher suites in RFC 5288 and RFC 5289
|
||||
|
||||
`rsa_aes_128_gcm_sha_256`
|
||||
`dhe_rsa_aes_128_gcm_sha_256`
|
||||
`dhe_dss_aes_128_gcm_sha_256`
|
||||
`ecdhe_ecdsa_aes_128_gcm_sha_256`
|
||||
`ecdh_ecdsa_aes_128_gcm_sha_256`
|
||||
`ecdhe_rsa_aes_128_gcm_sha_256`
|
||||
`ecdh_rsa_aes_128_gcm_sha_256`
|
||||
|
||||
### cipher suites using SHA384
|
||||
|
||||
`rsa_aes_256_gcm_sha_384`
|
||||
`dhe_rsa_aes_256_gcm_sha_384`
|
||||
`dhe_dss_aes_256_gcm_sha_384`
|
||||
`ecdhe_ecdsa_aes_256_sha_384`
|
||||
`ecdhe_rsa_aes_256_sha_384`
|
||||
`ecdhe_ecdsa_aes_256_gcm_sha_384`
|
||||
`ecdhe_rsa_aes_256_gcm_sha_384`
|
||||
|
||||
### chacha20-poly1305 cipher suites
|
||||
|
||||
`ecdhe_rsa_chacha20_poly1305_sha_256`
|
||||
`ecdhe_ecdsa_chacha20_poly1305_sha_256`
|
||||
`dhe_rsa_chacha20_poly1305_sha_256`
|
||||
|
||||
## GSKit
|
||||
|
||||
Ciphers are internally defined as numeric codes (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/gsk_attribute_set_buffer.htm),
|
||||
but libcurl maps them to the following case-insensitive names.
|
||||
|
||||
### SSL2 cipher suites (insecure: disabled by default)
|
||||
|
||||
`rc2-md5`
|
||||
`rc4-md5`
|
||||
`exp-rc2-md5`
|
||||
`exp-rc4-md5`
|
||||
`des-cbc-md5`
|
||||
`des-cbc3-md5`
|
||||
|
||||
### SSL3 cipher suites
|
||||
|
||||
`null-md5`
|
||||
`null-sha`
|
||||
`rc4-md5`
|
||||
`rc4-sha`
|
||||
`exp-rc2-cbc-md5`
|
||||
`exp-rc4-md5`
|
||||
`exp-des-cbc-sha`
|
||||
`des-cbc3-sha`
|
||||
|
||||
### TLS v1.0 cipher suites
|
||||
|
||||
`null-md5`
|
||||
`null-sha`
|
||||
`rc4-md5`
|
||||
`rc4-sha`
|
||||
`exp-rc2-cbc-md5`
|
||||
`exp-rc4-md5`
|
||||
`exp-des-cbc-sha`
|
||||
`des-cbc3-sha`
|
||||
`aes128-sha`
|
||||
`aes256-sha`
|
||||
|
||||
### TLS v1.1 cipher suites
|
||||
|
||||
`null-md5`
|
||||
`null-sha`
|
||||
`rc4-md5`
|
||||
`rc4-sha`
|
||||
`exp-des-cbc-sha`
|
||||
`des-cbc3-sha`
|
||||
`aes128-sha`
|
||||
`aes256-sha`
|
||||
|
||||
### TLS v1.2 cipher suites
|
||||
|
||||
`null-md5`
|
||||
`null-sha`
|
||||
`null-sha256`
|
||||
`rc4-md5`
|
||||
`rc4-sha`
|
||||
`des-cbc3-sha`
|
||||
`aes128-sha`
|
||||
`aes256-sha`
|
||||
`aes128-sha256`
|
||||
`aes256-sha256`
|
||||
`aes128-gcm-sha256`
|
||||
`aes256-gcm-sha384`
|
||||
|
||||
## WolfSSL
|
||||
|
||||
`RC4-SHA`,
|
||||
`RC4-MD5`,
|
||||
`DES-CBC3-SHA`,
|
||||
`AES128-SHA`,
|
||||
`AES256-SHA`,
|
||||
`NULL-SHA`,
|
||||
`NULL-SHA256`,
|
||||
`DHE-RSA-AES128-SHA`,
|
||||
`DHE-RSA-AES256-SHA`,
|
||||
`DHE-PSK-AES256-GCM-SHA384`,
|
||||
`DHE-PSK-AES128-GCM-SHA256`,
|
||||
`PSK-AES256-GCM-SHA384`,
|
||||
`PSK-AES128-GCM-SHA256`,
|
||||
`DHE-PSK-AES256-CBC-SHA384`,
|
||||
`DHE-PSK-AES128-CBC-SHA256`,
|
||||
`PSK-AES256-CBC-SHA384`,
|
||||
`PSK-AES128-CBC-SHA256`,
|
||||
`PSK-AES128-CBC-SHA`,
|
||||
`PSK-AES256-CBC-SHA`,
|
||||
`DHE-PSK-AES128-CCM`,
|
||||
`DHE-PSK-AES256-CCM`,
|
||||
`PSK-AES128-CCM`,
|
||||
`PSK-AES256-CCM`,
|
||||
`PSK-AES128-CCM-8`,
|
||||
`PSK-AES256-CCM-8`,
|
||||
`DHE-PSK-NULL-SHA384`,
|
||||
`DHE-PSK-NULL-SHA256`,
|
||||
`PSK-NULL-SHA384`,
|
||||
`PSK-NULL-SHA256`,
|
||||
`PSK-NULL-SHA`,
|
||||
`HC128-MD5`,
|
||||
`HC128-SHA`,
|
||||
`HC128-B2B256`,
|
||||
`AES128-B2B256`,
|
||||
`AES256-B2B256`,
|
||||
`RABBIT-SHA`,
|
||||
`NTRU-RC4-SHA`,
|
||||
`NTRU-DES-CBC3-SHA`,
|
||||
`NTRU-AES128-SHA`,
|
||||
`NTRU-AES256-SHA`,
|
||||
`AES128-CCM-8`,
|
||||
`AES256-CCM-8`,
|
||||
`ECDHE-ECDSA-AES128-CCM`,
|
||||
`ECDHE-ECDSA-AES128-CCM-8`,
|
||||
`ECDHE-ECDSA-AES256-CCM-8`,
|
||||
`ECDHE-RSA-AES128-SHA`,
|
||||
`ECDHE-RSA-AES256-SHA`,
|
||||
`ECDHE-ECDSA-AES128-SHA`,
|
||||
`ECDHE-ECDSA-AES256-SHA`,
|
||||
`ECDHE-RSA-RC4-SHA`,
|
||||
`ECDHE-RSA-DES-CBC3-SHA`,
|
||||
`ECDHE-ECDSA-RC4-SHA`,
|
||||
`ECDHE-ECDSA-DES-CBC3-SHA`,
|
||||
`AES128-SHA256`,
|
||||
`AES256-SHA256`,
|
||||
`DHE-RSA-AES128-SHA256`,
|
||||
`DHE-RSA-AES256-SHA256`,
|
||||
`ECDH-RSA-AES128-SHA`,
|
||||
`ECDH-RSA-AES256-SHA`,
|
||||
`ECDH-ECDSA-AES128-SHA`,
|
||||
`ECDH-ECDSA-AES256-SHA`,
|
||||
`ECDH-RSA-RC4-SHA`,
|
||||
`ECDH-RSA-DES-CBC3-SHA`,
|
||||
`ECDH-ECDSA-RC4-SHA`,
|
||||
`ECDH-ECDSA-DES-CBC3-SHA`,
|
||||
`AES128-GCM-SHA256`,
|
||||
`AES256-GCM-SHA384`,
|
||||
`DHE-RSA-AES128-GCM-SHA256`,
|
||||
`DHE-RSA-AES256-GCM-SHA384`,
|
||||
`ECDHE-RSA-AES128-GCM-SHA256`,
|
||||
`ECDHE-RSA-AES256-GCM-SHA384`,
|
||||
`ECDHE-ECDSA-AES128-GCM-SHA256`,
|
||||
`ECDHE-ECDSA-AES256-GCM-SHA384`,
|
||||
`ECDH-RSA-AES128-GCM-SHA256`,
|
||||
`ECDH-RSA-AES256-GCM-SHA384`,
|
||||
`ECDH-ECDSA-AES128-GCM-SHA256`,
|
||||
`ECDH-ECDSA-AES256-GCM-SHA384`,
|
||||
`CAMELLIA128-SHA`,
|
||||
`DHE-RSA-CAMELLIA128-SHA`,
|
||||
`CAMELLIA256-SHA`,
|
||||
`DHE-RSA-CAMELLIA256-SHA`,
|
||||
`CAMELLIA128-SHA256`,
|
||||
`DHE-RSA-CAMELLIA128-SHA256`,
|
||||
`CAMELLIA256-SHA256`,
|
||||
`DHE-RSA-CAMELLIA256-SHA256`,
|
||||
`ECDHE-RSA-AES128-SHA256`,
|
||||
`ECDHE-ECDSA-AES128-SHA256`,
|
||||
`ECDH-RSA-AES128-SHA256`,
|
||||
`ECDH-ECDSA-AES128-SHA256`,
|
||||
`ECDHE-RSA-AES256-SHA384`,
|
||||
`ECDHE-ECDSA-AES256-SHA384`,
|
||||
`ECDH-RSA-AES256-SHA384`,
|
||||
`ECDH-ECDSA-AES256-SHA384`,
|
||||
`ECDHE-RSA-CHACHA20-POLY1305`,
|
||||
`ECDHE-ECDSA-CHACHA20-POLY1305`,
|
||||
`DHE-RSA-CHACHA20-POLY1305`,
|
||||
`ECDHE-RSA-CHACHA20-POLY1305-OLD`,
|
||||
`ECDHE-ECDSA-CHACHA20-POLY1305-OLD`,
|
||||
`DHE-RSA-CHACHA20-POLY1305-OLD`,
|
||||
`ADH-AES128-SHA`,
|
||||
`QSH`,
|
||||
`RENEGOTIATION-INFO`,
|
||||
`IDEA-CBC-SHA`,
|
||||
`ECDHE-ECDSA-NULL-SHA`,
|
||||
`ECDHE-PSK-NULL-SHA256`,
|
||||
`ECDHE-PSK-AES128-CBC-SHA256`,
|
||||
`PSK-CHACHA20-POLY1305`,
|
||||
`ECDHE-PSK-CHACHA20-POLY1305`,
|
||||
`DHE-PSK-CHACHA20-POLY1305`,
|
||||
`EDH-RSA-DES-CBC3-SHA`,
|
||||
|
||||
## WinSSL
|
||||
|
||||
WinSSL allows the enabling and disabling of encryption algorithms, but not specific ciphersuites. They are defined by Microsoft (https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549(v=vs.85).aspx)
|
||||
|
||||
`CALG_MD2`,
|
||||
`CALG_MD4`,
|
||||
`CALG_MD5`,
|
||||
`CALG_SHA`,
|
||||
`CALG_SHA1`,
|
||||
`CALG_MAC`,
|
||||
`CALG_RSA_SIGN`,
|
||||
`CALG_DSS_SIGN`,
|
||||
`CALG_NO_SIGN`,
|
||||
`CALG_RSA_KEYX`,
|
||||
`CALG_DES`,
|
||||
`CALG_3DES_112`,
|
||||
`CALG_3DES`,
|
||||
`CALG_DESX`,
|
||||
`CALG_RC2`,
|
||||
`CALG_RC4`,
|
||||
`CALG_SEAL`,
|
||||
`CALG_DH_SF`,
|
||||
`CALG_DH_EPHEM`,
|
||||
`CALG_AGREEDKEY_ANY`,
|
||||
`CALG_HUGHES_MD5`,
|
||||
`CALG_SKIPJACK`,
|
||||
`CALG_TEK`,
|
||||
`CALG_CYLINK_MEK`,
|
||||
`CALG_SSL3_SHAMD5`,
|
||||
`CALG_SSL3_MASTER`,
|
||||
`CALG_SCHANNEL_MASTER_HASH`,
|
||||
`CALG_SCHANNEL_MAC_KEY`,
|
||||
`CALG_SCHANNEL_ENC_KEY`,
|
||||
`CALG_PCT1_MASTER`,
|
||||
`CALG_SSL2_MASTER`,
|
||||
`CALG_TLS1_MASTER`,
|
||||
`CALG_RC5`,
|
||||
`CALG_HMAC`,
|
||||
`CALG_TLS1PRF`,
|
||||
`CALG_HASH_REPLACE_OWF`,
|
||||
`CALG_AES_128`,
|
||||
`CALG_AES_192`,
|
||||
`CALG_AES_256`,
|
||||
`CALG_AES`,
|
||||
`CALG_SHA_256`,
|
||||
`CALG_SHA_384`,
|
||||
`CALG_SHA_512`,
|
||||
`CALG_ECDH`,
|
||||
`CALG_ECMQV`,
|
||||
`CALG_ECDSA`,
|
||||
`CALG_ECDH_EPHEM`,
|
3
curl/docs/CMakeLists.txt
Normal file
3
curl/docs/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
||||
#add_subdirectory(examples)
|
||||
add_subdirectory(libcurl)
|
||||
add_subdirectory(cmdline-opts)
|
32
curl/docs/CODE_OF_CONDUCT.md
Normal file
32
curl/docs/CODE_OF_CONDUCT.md
Normal file
@ -0,0 +1,32 @@
|
||||
Contributor Code of Conduct
|
||||
===========================
|
||||
|
||||
As contributors and maintainers of this project, we pledge to respect all
|
||||
people who contribute through reporting issues, posting feature requests,
|
||||
updating documentation, submitting pull requests or patches, and other
|
||||
activities.
|
||||
|
||||
We are committed to making participation in this project a harassment-free
|
||||
experience for everyone, regardless of level of experience, gender, gender
|
||||
identity and expression, sexual orientation, disability, personal appearance,
|
||||
body size, race, ethnicity, age, or religion.
|
||||
|
||||
Examples of unacceptable behavior by participants include the use of sexual
|
||||
language or imagery, derogatory comments or personal attacks, trolling, public
|
||||
or private harassment, insults, or other unprofessional conduct.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct. Project maintainers who do not
|
||||
follow the Code of Conduct may be removed from the project team.
|
||||
|
||||
This code of conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by opening an issue or contacting one or more of the project
|
||||
maintainers.
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor
|
||||
Covenant](https://contributor-covenant.org/), version 1.1.0, available at
|
||||
[https://contributor-covenant.org/version/1/1/0/](https://contributor-covenant.org/version/1/1/0/)
|
246
curl/docs/CODE_STYLE.md
Normal file
246
curl/docs/CODE_STYLE.md
Normal file
@ -0,0 +1,246 @@
|
||||
# curl C code style
|
||||
|
||||
Source code that has a common style is easier to read than code that uses
|
||||
different styles in different places. It helps making the code feel like one
|
||||
single code base. Easy-to-read is a very important property of code and helps
|
||||
making it easier to review when new things are added and it helps debugging
|
||||
code when developers are trying to figure out why things go wrong. A unified
|
||||
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.
|
||||
|
||||
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
|
||||
particularly unusual rules in our set of rules.
|
||||
|
||||
We also work hard on writing code that are warning-free on all the major
|
||||
platforms and in general on as many platforms as possible. Code that obviously
|
||||
will cause warnings will not be accepted as-is.
|
||||
|
||||
## Naming
|
||||
|
||||
Try using a non-confusing naming scheme for your new functions and variable
|
||||
names. It doesn't necessarily have to mean that you should use the same as in
|
||||
other places of the code, just that the names should be logical,
|
||||
understandable and be named according to what they're used for. File-local
|
||||
functions should be made static. We like lower case names.
|
||||
|
||||
See the [INTERNALS](INTERNALS.md) document on how we name non-exported
|
||||
library-global symbols.
|
||||
|
||||
## Indenting
|
||||
|
||||
We use only spaces for indentation, never TABs. We use two spaces for each new
|
||||
open brace.
|
||||
|
||||
if(something_is_true) {
|
||||
while(second_statement == fine) {
|
||||
moo();
|
||||
}
|
||||
}
|
||||
|
||||
## Comments
|
||||
|
||||
Since we write C89 code, **//** comments are not allowed. They weren't
|
||||
introduced in the C standard until C99. We use only **/* comments */**.
|
||||
|
||||
/* this is a comment */
|
||||
|
||||
## Long lines
|
||||
|
||||
Source code in curl may never be wider than 79 columns and there are two
|
||||
reasons for maintaining this even in the modern era of very large and high
|
||||
resolution screens:
|
||||
|
||||
1. Narrower columns are easier to read than very wide ones. There's a reason
|
||||
newspapers have used columns for decades or centuries.
|
||||
|
||||
2. Narrower columns allow developers to easier show multiple pieces of code
|
||||
next to each other in different windows. I often have two or three source
|
||||
code windows next to each other on the same screen - as well as multiple
|
||||
terminal and debugging windows.
|
||||
|
||||
## Braces
|
||||
|
||||
In if/while/do/for expressions, we write the open brace on the same line as
|
||||
the keyword and we then set the closing brace on the same indentation level as
|
||||
the initial keyword. Like this:
|
||||
|
||||
if(age < 40) {
|
||||
/* clearly a youngster */
|
||||
}
|
||||
|
||||
You may omit the braces if they would contain only a one-line statement:
|
||||
|
||||
if(!x)
|
||||
continue;
|
||||
|
||||
For functions the opening brace should be on a separate line:
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
## 'else' on the following line
|
||||
|
||||
When adding an **else** clause to a conditional expression using braces, we
|
||||
add it on a new line after the closing brace. Like this:
|
||||
|
||||
if(age < 40) {
|
||||
/* clearly a youngster */
|
||||
}
|
||||
else {
|
||||
/* probably grumpy */
|
||||
}
|
||||
|
||||
## No space before parentheses
|
||||
|
||||
When writing expressions using if/while/do/for, there shall be no space
|
||||
between the keyword and the open parenthesis. Like this:
|
||||
|
||||
while(1) {
|
||||
/* loop forever */
|
||||
}
|
||||
|
||||
## Use boolean conditions
|
||||
|
||||
Rather than test a conditional value such as a bool against TRUE or FALSE, a
|
||||
pointer against NULL or != NULL and an int against zero or not zero in
|
||||
if/while conditions we prefer:
|
||||
|
||||
result = do_something();
|
||||
if(!result) {
|
||||
/* something went wrong */
|
||||
return result;
|
||||
}
|
||||
|
||||
## No assignments in conditions
|
||||
|
||||
To increase readability and reduce complexity of conditionals, we avoid
|
||||
assigning variables within if/while conditions. We frown upon this style:
|
||||
|
||||
if((ptr = malloc(100)) == NULL)
|
||||
return NULL;
|
||||
|
||||
and instead we encourage the above version to be spelled out more clearly:
|
||||
|
||||
ptr = malloc(100);
|
||||
if(!ptr)
|
||||
return NULL;
|
||||
|
||||
## New block on a new line
|
||||
|
||||
We never write multiple statements on the same source line, even for very
|
||||
short if() conditions.
|
||||
|
||||
if(a)
|
||||
return TRUE;
|
||||
else if(b)
|
||||
return FALSE;
|
||||
|
||||
and NEVER:
|
||||
|
||||
if(a) return TRUE;
|
||||
else if(b) return FALSE;
|
||||
|
||||
## Space around operators
|
||||
|
||||
Please use spaces on both sides of operators in C expressions. Postfix **(),
|
||||
[], ->, ., ++, --** and Unary **+, - !, ~, &** operators excluded they should
|
||||
have no space.
|
||||
|
||||
Examples:
|
||||
|
||||
bla = func();
|
||||
who = name[0];
|
||||
age += 1;
|
||||
true = !false;
|
||||
size += -2 + 3 * (a + b);
|
||||
ptr->member = a++;
|
||||
struct.field = b--;
|
||||
ptr = &address;
|
||||
contents = *pointer;
|
||||
complement = ~bits;
|
||||
empty = (!*string) ? TRUE : FALSE;
|
||||
|
||||
## No parentheses for return values
|
||||
|
||||
We use the 'return' statement without extra parentheses around the value:
|
||||
|
||||
int works(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
## Parentheses for sizeof arguments
|
||||
|
||||
When using the sizeof operator in code, we prefer it to be written with
|
||||
parentheses around its argument:
|
||||
|
||||
int size = sizeof(int);
|
||||
|
||||
## Column alignment
|
||||
|
||||
Some statements cannot be completed on a single line because the line would be
|
||||
too long, the statement too hard to read, or due to other style guidelines
|
||||
above. In such a case the statement will span multiple lines.
|
||||
|
||||
If a continuation line is part of an expression or sub-expression then you
|
||||
should align on the appropriate column so that it's easy to tell what part of
|
||||
the statement it is. Operators should not start continuation lines. In other
|
||||
cases follow the 2-space indent guideline. Here are some examples from
|
||||
libcurl:
|
||||
|
||||
if(Curl_pipeline_wanted(handle->multi, CURLPIPE_HTTP1) &&
|
||||
(handle->set.httpversion != CURL_HTTP_VERSION_1_0) &&
|
||||
(handle->set.httpreq == HTTPREQ_GET ||
|
||||
handle->set.httpreq == HTTPREQ_HEAD))
|
||||
/* didn't ask for HTTP/1.0 and a GET or HEAD */
|
||||
return TRUE;
|
||||
|
||||
If no parenthesis, use the default indent:
|
||||
|
||||
data->set.http_disable_hostname_check_before_authentication =
|
||||
(0 != va_arg(param, long)) ? TRUE : FALSE;
|
||||
|
||||
Function invoke with an open parenthesis:
|
||||
|
||||
if(option) {
|
||||
result = parse_login_details(option, strlen(option),
|
||||
(userp ? &user : NULL),
|
||||
(passwdp ? &passwd : NULL),
|
||||
NULL);
|
||||
}
|
||||
|
||||
Align with the "current open" parenthesis:
|
||||
|
||||
DEBUGF(infof(data, "Curl_pp_readresp_ %d bytes of trailing "
|
||||
"server response left\n",
|
||||
(int)clipamount));
|
||||
|
||||
## Platform dependent code
|
||||
|
||||
Use **#ifdef HAVE_FEATURE** to do conditional code. We avoid checking for
|
||||
particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE
|
||||
shall be generated by the configure script for unix-like systems and they are
|
||||
hard-coded in the config-[system].h files for the others.
|
||||
|
||||
We also encourage use of macros/functions that possibly are empty or defined
|
||||
to constants when libcurl is built without that feature, to make the code
|
||||
seamless. Like this example where the **magic()** function works differently
|
||||
depending on a build-time conditional:
|
||||
|
||||
#ifdef HAVE_MAGIC
|
||||
void magic(int a)
|
||||
{
|
||||
return a + 2;
|
||||
}
|
||||
#else
|
||||
#define magic(x) 1
|
||||
#endif
|
||||
|
||||
int content = magic(3);
|
@ -1,306 +0,0 @@
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
When Contributing Source Code
|
||||
|
||||
This document is intended to offer guidelines that can be useful to keep in
|
||||
mind when you decide to contribute to the project. This concerns new features
|
||||
as well as corrections to existing flaws or bugs.
|
||||
|
||||
1. Learning cURL
|
||||
1.1 Join the Community
|
||||
1.2 License
|
||||
1.3 What To Read
|
||||
|
||||
2. cURL Coding Standards
|
||||
2.1 Naming
|
||||
2.2 Indenting
|
||||
2.3 Commenting
|
||||
2.4 Line Lengths
|
||||
2.5 General Style
|
||||
2.6 Non-clobbering All Over
|
||||
2.7 Platform Dependent Code
|
||||
2.8 Write Separate Patches
|
||||
2.9 Patch Against Recent Sources
|
||||
2.10 Document
|
||||
2.11 Test Cases
|
||||
|
||||
3. Pushing Out Your Changes
|
||||
3.1 Write Access to git Repository
|
||||
3.2 How To Make a Patch with git
|
||||
3.3 How To Make a Patch without git
|
||||
3.4 How to get your changes into the main sources
|
||||
3.5 Write good commit messages
|
||||
3.6 About pull requests
|
||||
|
||||
==============================================================================
|
||||
|
||||
1. Learning cURL
|
||||
|
||||
1.1 Join the Community
|
||||
|
||||
Skip over to http://curl.haxx.se/mail/ and join the appropriate mailing
|
||||
list(s). Read up on details before you post questions. Read this file before
|
||||
you start sending patches! We prefer patches and discussions being held on
|
||||
the mailing list(s), not sent to individuals.
|
||||
|
||||
Before posting to one of the curl mailing lists, please read up on the mailing
|
||||
list etiquette: http://curl.haxx.se/mail/etiquette.html
|
||||
|
||||
We also hang out on IRC in #curl on irc.freenode.net
|
||||
|
||||
If you're at all interested in the code side of things, consider clicking
|
||||
'watch' on the curl repo at github to get notified on pull requests and new
|
||||
issues posted there.
|
||||
|
||||
1.2. License
|
||||
|
||||
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
|
||||
otherwise.
|
||||
|
||||
If you add a larger piece of code, you can opt to make that file or set of
|
||||
files to use a different license as long as they don't enforce any changes to
|
||||
the rest of the package and they make sense. Such "separate parts" can not be
|
||||
GPL licensed (as we don't want copyleft to affect users of libcurl) but they
|
||||
must use "GPL compatible" licenses (as we want to allow users to use libcurl
|
||||
properly in GPL licensed environments).
|
||||
|
||||
When changing existing source code, you do not alter the copyright of the
|
||||
original file(s). The copyright will still be owned by the original
|
||||
creator(s) or those who have been assigned copyright by the original
|
||||
author(s).
|
||||
|
||||
By submitting a patch to the curl project, you are assumed to have the right
|
||||
to the code and to be allowed by your employer or whatever to hand over that
|
||||
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!
|
||||
|
||||
1.3 What To Read
|
||||
|
||||
Source code, the man pages, the INTERNALS document, TODO, KNOWN_BUGS and the
|
||||
most recent changes in the git log. Just lurking on the curl-library mailing
|
||||
list is gonna give you a lot of insights on what's going on right now. Asking
|
||||
there is a good idea too.
|
||||
|
||||
2. cURL Coding Standards
|
||||
|
||||
2.1 Naming
|
||||
|
||||
Try using a non-confusing naming scheme for your new functions and variable
|
||||
names. It doesn't necessarily have to mean that you should use the same as in
|
||||
other places of the code, just that the names should be logical,
|
||||
understandable and be named according to what they're used for. File-local
|
||||
functions should be made static. We like lower case names.
|
||||
|
||||
See the INTERNALS document on how we name non-exported library-global
|
||||
symbols.
|
||||
|
||||
2.2 Indenting
|
||||
|
||||
Use the same indenting levels and bracing method as all the other code
|
||||
already does. It makes the source code easier to follow if all of it is
|
||||
written using the same style. We don't ask you to like it, we just ask you to
|
||||
follow the tradition! ;-) This mainly means: 2-level indents, using spaces
|
||||
only (no tabs) and having the opening brace ({) on the same line as the if()
|
||||
or while().
|
||||
|
||||
Also note that we use if() and while() with no space before the parenthesis.
|
||||
|
||||
2.3 Commenting
|
||||
|
||||
Comment your source code extensively using C comments (/* comment */), DO NOT
|
||||
use C++ comments (// this style). Commented code is quality code and enables
|
||||
future modifications much more. Uncommented code risk having to be completely
|
||||
replaced when someone wants to extend things, since other persons' source
|
||||
code can get quite hard to read.
|
||||
|
||||
2.4 Line Lengths
|
||||
|
||||
We write source lines shorter than 80 columns.
|
||||
|
||||
2.5 General Style
|
||||
|
||||
Keep your functions small. If they're small you avoid a lot of mistakes and
|
||||
you don't accidentally mix up variables etc.
|
||||
|
||||
2.6 Non-clobbering All Over
|
||||
|
||||
When you write new functionality or fix bugs, it is important that you don't
|
||||
fiddle all over the source files and functions. Remember that it is likely
|
||||
that other people have done changes in the same source files as you have and
|
||||
possibly even in the same functions. If you bring completely new
|
||||
functionality, try writing it in a new source file. If you fix bugs, try to
|
||||
fix one bug at a time and send them as separate patches.
|
||||
|
||||
2.7 Platform Dependent Code
|
||||
|
||||
Use #ifdef HAVE_FEATURE to do conditional code. We avoid checking for
|
||||
particular operating systems or hardware in the #ifdef lines. The
|
||||
HAVE_FEATURE shall be generated by the configure script for unix-like systems
|
||||
and they are hard-coded in the config-[system].h files for the others.
|
||||
|
||||
2.8 Write Separate Patches
|
||||
|
||||
It is annoying when you get a huge patch from someone that is said to fix 511
|
||||
odd problems, but discussions and opinions don't agree with 510 of them - or
|
||||
509 of them were already fixed in a different way. Then the patcher needs to
|
||||
extract the single interesting patch from somewhere within the huge pile of
|
||||
source, and that gives a lot of extra work. Preferably, all fixes that
|
||||
correct different problems should be in their own patch with an attached
|
||||
description exactly what they correct so that all patches can be selectively
|
||||
applied by the maintainer or other interested parties.
|
||||
|
||||
Also, separate patches enable bisecting much better when we track problems in
|
||||
the future.
|
||||
|
||||
2.9 Patch Against Recent Sources
|
||||
|
||||
Please try to get the latest available sources to make your patches
|
||||
against. It makes the life of the developers so much easier. The very best is
|
||||
if you get the most up-to-date sources from the git repository, but the
|
||||
latest release archive is quite OK as well!
|
||||
|
||||
2.10 Document
|
||||
|
||||
Writing docs is dead boring and one of the big problems with many open source
|
||||
projects. Someone's gotta do it. It makes it a lot easier if you submit a
|
||||
small description of your fix or your new features with every contribution so
|
||||
that it can be swiftly added to the package documentation.
|
||||
|
||||
The documentation is always made in man pages (nroff formatted) or plain
|
||||
ASCII files. All HTML files on the web site and in the release archives are
|
||||
generated from the nroff/ASCII versions.
|
||||
|
||||
2.11 Test Cases
|
||||
|
||||
Since the introduction of the test suite, we can quickly verify that the main
|
||||
features are working as they're supposed to. To maintain this situation and
|
||||
improve it, all new features and functions that are added need to be tested
|
||||
in the test suite. Every feature that is added should get at least one valid
|
||||
test case that verifies that it works as documented. If every submitter also
|
||||
posts a few test cases, it won't end up as a heavy burden on a single person!
|
||||
|
||||
If you don't have test cases or perhaps you have done something that is very
|
||||
hard to write tests for, do explain exactly how you have otherwise tested and
|
||||
verified your changes.
|
||||
|
||||
3. Pushing Out Your Changes
|
||||
|
||||
3.1 Write Access to git Repository
|
||||
|
||||
If you are a frequent contributor, or have another good reason, you can of
|
||||
course get write access to the git repository and then you'll be able to push
|
||||
your changes straight into the git repo instead of sending changes by mail as
|
||||
patches. Just ask if this is what you'd want. You will be required to have
|
||||
posted a few quality patches first, before you can be granted push access.
|
||||
|
||||
3.2 How To Make a Patch with git
|
||||
|
||||
You need to first checkout the repository:
|
||||
|
||||
git clone https://github.com/bagder/curl.git
|
||||
|
||||
You then proceed and edit all the files you like and you commit them to your
|
||||
local repository:
|
||||
|
||||
git commit [file]
|
||||
|
||||
As usual, group your commits so that you commit all changes that at once that
|
||||
constitutes a logical change. See also section "3.5 Write good commit
|
||||
messages".
|
||||
|
||||
Once you have done all your commits and you're happy with what you see, you
|
||||
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
|
||||
commit.
|
||||
|
||||
Now send those patches off to the curl-library list. You can of course opt to
|
||||
do that with the 'git send-email' command.
|
||||
|
||||
3.3 How To Make a Patch without git
|
||||
|
||||
Keep a copy of the unmodified curl sources. Make your changes in a separate
|
||||
source tree. When you think you have something that you want to offer the
|
||||
curl community, use GNU diff to generate patches.
|
||||
|
||||
If you have modified a single file, try something like:
|
||||
|
||||
diff -u unmodified-file.c my-changed-one.c > my-fixes.diff
|
||||
|
||||
If you have modified several files, possibly in different directories, you
|
||||
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:
|
||||
|
||||
For unix-like operating systems:
|
||||
|
||||
https://savannah.gnu.org/projects/patch/
|
||||
https://www.gnu.org/software/diffutils/
|
||||
|
||||
For Windows:
|
||||
|
||||
http://gnuwin32.sourceforge.net/packages/patch.htm
|
||||
http://gnuwin32.sourceforge.net/packages/diffutils.htm
|
||||
|
||||
3.4 How to get your changes into the main sources
|
||||
|
||||
Submit your patch to the curl-library mailing list.
|
||||
|
||||
Make the patch against as recent sources as possible.
|
||||
|
||||
Make sure your patch adheres to the source indent and coding style of already
|
||||
existing source code. Failing to do so just adds more work for me.
|
||||
|
||||
Respond to replies on the list about the patch and answer questions and/or
|
||||
fix nits/flaws. This is very important. I will take lack of replies as a sign
|
||||
that you're not very anxious to get your patch accepted and I tend to simply
|
||||
drop such patches from my TODO list.
|
||||
|
||||
If you've followed the above paragraphs and your patch still hasn't been
|
||||
incorporated after some weeks, consider resubmitting it to the list.
|
||||
|
||||
3.5 Write good commit messages
|
||||
|
||||
A short guide to how to do fine commit messages in the curl project.
|
||||
|
||||
---- start ----
|
||||
[area]: [short line describing the main effect]
|
||||
|
||||
[separate the above single line from the rest with an empty line]
|
||||
|
||||
[full description, no wider than 72 columns that describe as much as
|
||||
possible as to why this change is made, and possibly what things
|
||||
it fixes and everything else that is related]
|
||||
|
||||
[Bug: link to source of the report or more related discussion]
|
||||
[Reported-by: John Doe - credit the reporter]
|
||||
[whatever-else-by: credit all helpers, finders, doers]
|
||||
---- stop ----
|
||||
|
||||
Don't forget to use commit --author="" if you commit someone else's work,
|
||||
and make sure that you have your own user and email setup correctly in git
|
||||
before you commit
|
||||
|
||||
3.6 About pull requests
|
||||
|
||||
With git (and especially github) it is easy and tempting to send a pull
|
||||
request to the curl project to have changes merged this way instead of
|
||||
mailing patches to the curl-library mailing list.
|
||||
|
||||
We used to dislike this but we're trying to change that and accept that this
|
||||
is a frictionless way for people to contribute to the project. We now welcome
|
||||
pull requests!
|
||||
|
||||
We will continue to avoid using github's merge tools to make the history
|
||||
linear and to make sure commits follow our style guidelines.
|
267
curl/docs/CONTRIBUTE.md
Normal file
267
curl/docs/CONTRIBUTE.md
Normal file
@ -0,0 +1,267 @@
|
||||
# Contributing to the curl project
|
||||
|
||||
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
|
||||
|
||||
Skip over to [https://curl.haxx.se/mail/](https://curl.haxx.se/mail/) and join
|
||||
the appropriate mailing list(s). Read up on details before you post
|
||||
questions. Read this file before you start sending patches! We prefer
|
||||
questions sent to and discussions being held on the mailing list(s), not sent
|
||||
to individuals.
|
||||
|
||||
Before posting to one of the curl mailing lists, please read up on the
|
||||
[mailing list etiquette](https://curl.haxx.se/mail/etiquette.html).
|
||||
|
||||
We also hang out on IRC in #curl on irc.freenode.net
|
||||
|
||||
If you're 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
|
||||
|
||||
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
|
||||
otherwise.
|
||||
|
||||
If you add a larger piece of code, you can opt to make that file or set of
|
||||
files to use a different license as long as they don't enforce any changes to
|
||||
the rest of the package and they make sense. Such "separate parts" can not be
|
||||
GPL licensed (as we don't want copyleft to affect users of libcurl) but they
|
||||
must use "GPL compatible" licenses (as we want to allow users to use libcurl
|
||||
properly in GPL licensed environments).
|
||||
|
||||
When changing existing source code, you do not alter the copyright of the
|
||||
original file(s). The copyright will still be owned by the original creator(s)
|
||||
or those who have been assigned copyright by the original author(s).
|
||||
|
||||
By submitting a patch to the curl project, you are assumed to have the right
|
||||
to the code and to be allowed by your employer or whatever to hand over that
|
||||
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
|
||||
|
||||
Source code, the man pages, the [INTERNALS
|
||||
document](https://curl.haxx.se/dev/internals.html),
|
||||
[TODO](https://curl.haxx.se/docs/todo.html),
|
||||
[KNOWN_BUGS](https://curl.haxx.se/docs/knownbugs.html) and the [most recent
|
||||
changes](https://curl.haxx.se/dev/sourceactivity.html) in git. Just lurking on
|
||||
the [curl-library mailing
|
||||
list](https://curl.haxx.se/mail/list.cgi?list=curl-library) will give you a
|
||||
lot of insights on what's going on right now. Asking there is a good idea too.
|
||||
|
||||
## Write a good patch
|
||||
|
||||
### Follow code style
|
||||
|
||||
When writing C code, follow the
|
||||
[CODE_STYLE](https://curl.haxx.se/dev/code-style.html) already established in
|
||||
the project. Consistent style makes code easier to read and mistakes less
|
||||
likely to happen. Run `make checksrc` before you submit anything, to make sure
|
||||
you follow the basic style. That script doesn't verify everything, but if it
|
||||
complains you know you have work to do.
|
||||
|
||||
### Non-clobbering All Over
|
||||
|
||||
When you write new functionality or fix bugs, it is important that you don't
|
||||
fiddle all over the source files and functions. Remember that it is likely
|
||||
that other people have done changes in the same source files as you have and
|
||||
possibly even in the same functions. If you bring completely new
|
||||
functionality, try writing it in a new source file. If you fix bugs, try to
|
||||
fix one bug at a time and send them as separate patches.
|
||||
|
||||
### Write Separate Changes
|
||||
|
||||
It is annoying when you get a huge patch from someone that is said to fix 511
|
||||
odd problems, but discussions and opinions don't agree with 510 of them - or
|
||||
509 of them were already fixed in a different way. Then the person merging
|
||||
this change needs to extract the single interesting patch from somewhere
|
||||
within the huge pile of source, and that creates a lot of extra work.
|
||||
|
||||
Preferably, each fix that corrects a problem should be in its own patch/commit
|
||||
with its own description/commit message stating exactly what they correct so
|
||||
that all changes can be selectively applied by the maintainer or other
|
||||
interested parties.
|
||||
|
||||
Also, separate changes enable bisecting much better for tracking problems
|
||||
and regression in the future.
|
||||
|
||||
### Patch Against Recent Sources
|
||||
|
||||
Please try to get the latest available sources to make your patches against.
|
||||
It makes the lives of the developers so much easier. The very best is if you
|
||||
get the most up-to-date sources from the git repository, but the latest
|
||||
release archive is quite OK as well!
|
||||
|
||||
### Documentation
|
||||
|
||||
Writing docs is dead boring and one of the big problems with many open source
|
||||
projects. But someone's gotta do it! It makes things a lot easier if you
|
||||
submit a small description of your fix or your new features with every
|
||||
contribution so that it can be swiftly added to the package documentation.
|
||||
|
||||
The documentation is always made in man pages (nroff formatted) or plain
|
||||
ASCII files. All HTML files on the web site and in the release archives are
|
||||
generated from the nroff/ASCII versions.
|
||||
|
||||
### Test Cases
|
||||
|
||||
Since the introduction of the test suite, we can quickly verify that the main
|
||||
features are working as they're supposed to. To maintain this situation and
|
||||
improve it, all new features and functions that are added need to be tested
|
||||
in the test suite. Every feature that is added should get at least one valid
|
||||
test case that verifies that it works as documented. If every submitter also
|
||||
posts a few test cases, it won't end up as a heavy burden on a single person!
|
||||
|
||||
If you don't have test cases or perhaps you have done something that is very
|
||||
hard to write tests for, do explain exactly how you have otherwise tested and
|
||||
verified your changes.
|
||||
|
||||
## Sharing Your Changes
|
||||
|
||||
### How to get your changes into the main sources
|
||||
|
||||
Ideally you file a [pull request on
|
||||
github](https://github.com/curl/curl/pulls), but you can also send your plain
|
||||
patch to [the curl-library mailing
|
||||
list](https://curl.haxx.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.
|
||||
|
||||
Respond on the list or on github about the change and answer questions and/or
|
||||
fix nits/flaws. This is very important. We will take lack of replies as a
|
||||
sign that you're not very anxious to get your patch accepted and we tend to
|
||||
simply drop such changes.
|
||||
|
||||
### About pull requests
|
||||
|
||||
With github it is easy to send a [pull
|
||||
request](https://github.com/curl/curl/pulls) to the curl project to have
|
||||
changes merged.
|
||||
|
||||
We strongly prefer pull requests to mailed patches, as it makes it a proper
|
||||
git commit that is easy to merge and they are easy to track and not that easy
|
||||
to loose 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. Every pull request is verified for each of the following:
|
||||
|
||||
- ... it still builds, warning-free, on Linux and macOS, with both
|
||||
clang and gcc
|
||||
- ... it still builds fine on Windows with several MSVC versions
|
||||
- ... it still builds with cmake on Linux, with gcc and clang
|
||||
- ... it follows rudimentary code style rules
|
||||
- ... the test suite still runs 100% fine
|
||||
- ... the release tarball (the "dist") still works
|
||||
- ... it builds fine in-tree as well as out-of-tree
|
||||
- ... code coverage doesn't shrink drastically
|
||||
|
||||
If the pull-request fails one of these tests, it will show up as a red X and
|
||||
you are expected to fix the problem. If you don't understand when the issue is
|
||||
or have other problems to fix the complaint, just ask and other project
|
||||
members will likely be able to help out.
|
||||
|
||||
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
|
||||
|
||||
Make the patch against as recent source versions as possible.
|
||||
|
||||
If you've followed the tips in this document and your patch still hasn't 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
|
||||
|
||||
A short guide to how to write commit messages in the curl project.
|
||||
|
||||
---- start ----
|
||||
[area]: [short line describing the main effect]
|
||||
-- empty line --
|
||||
[full description, no wider than 72 columns that describe as much as
|
||||
possible as to why this change is made, and possibly what things
|
||||
it fixes and everything else that is related]
|
||||
-- empty line --
|
||||
[Closes/Fixes #1234 - if this closes or fixes a github issue]
|
||||
[Bug: URL to source of the report or more related discussion]
|
||||
[Reported-by: John Doe - credit the reporter]
|
||||
[whatever-else-by: credit all helpers, finders, doers]
|
||||
---- stop ----
|
||||
|
||||
Don't forget to use commit --author="" if you commit someone else's work, and
|
||||
make sure that you have your own user and email setup correctly in git before
|
||||
you commit
|
||||
|
||||
### Write Access to git Repository
|
||||
|
||||
If you are a very frequent contributor, you may be given push access to the
|
||||
git repository and then you'll be able to push your changes straight into the
|
||||
git repo instead of sending changes as pull requests or by mail as patches.
|
||||
|
||||
Just ask if this is what you'd want. You will be required to have posted
|
||||
several high quality patches first, before you can be granted push access.
|
||||
|
||||
### How To Make a Patch with git
|
||||
|
||||
You need to first checkout the repository:
|
||||
|
||||
git clone https://github.com/curl/curl.git
|
||||
|
||||
You then proceed and edit all the files you like and you commit them to your
|
||||
local repository:
|
||||
|
||||
git commit [file]
|
||||
|
||||
As usual, group your commits so that you commit all changes at once that
|
||||
constitute a logical change.
|
||||
|
||||
Once you have done all your commits and you're happy with what you see, you
|
||||
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
|
||||
commit.
|
||||
|
||||
Now send those patches off to the curl-library list. You can of course opt to
|
||||
do that with the 'git send-email' command.
|
||||
|
||||
### How To Make a Patch without git
|
||||
|
||||
Keep a copy of the unmodified curl sources. Make your changes in a separate
|
||||
source tree. When you think you have something that you want to offer the
|
||||
curl community, use GNU diff to generate patches.
|
||||
|
||||
If you have modified a single file, try something like:
|
||||
|
||||
diff -u unmodified-file.c my-changed-one.c > my-fixes.diff
|
||||
|
||||
If you have modified several files, possibly in different directories, you
|
||||
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:
|
||||
|
||||
For unix-like operating systems:
|
||||
|
||||
- [https://savannah.gnu.org/projects/patch/](https://savannah.gnu.org/projects/patch/)
|
||||
- [https://www.gnu.org/software/diffutils/](https://www.gnu.org/software/diffutils/)
|
||||
|
||||
For Windows:
|
||||
|
||||
- [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)
|
81
curl/docs/DEPRECATE.md
Normal file
81
curl/docs/DEPRECATE.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Items to be removed from future curl releases
|
||||
|
||||
If any of these deprecated features is a cause for concern for you, please
|
||||
email the curl-library mailing list as soon as possible and explain to us why
|
||||
this is a problem for you and how your use case can't be satisfied properly
|
||||
using a work around.
|
||||
|
||||
## HTTP pipelining
|
||||
|
||||
HTTP pipelining is badly supported by curl in the sense that we have bugs and
|
||||
it is a fragile feature without enough tests. Also, when something turns out
|
||||
to have problems it is really tricky to debug due to the timing sensitivity so
|
||||
very often enabling debug outputs or similar completely changes the nature of
|
||||
the behavior and things are not reproducing anymore!
|
||||
|
||||
HTTP pipelining was never enabled by default by the large desktop browsers due
|
||||
to all the issues with it. Both Firefox and Chrome have also dropped
|
||||
pipelining support entirely since a long time back now. We are in fact over
|
||||
time becoming more and more lonely in supporting pipelining.
|
||||
|
||||
The bad state of HTTP pipelining was a primary driving factor behind HTTP/2
|
||||
and its multiplexing feature. HTTP/2 multiplexing is truly and really
|
||||
"pipelining done right". It is way more solid, practical and solves the use
|
||||
case in a better way with better performance and fewer downsides and problems.
|
||||
|
||||
In 2018, pipelining *should* be abandoned and HTTP/2 should be used instead.
|
||||
|
||||
### State
|
||||
|
||||
In 7.62.0, we will add code that ignores the "enable pipeline" option
|
||||
setting). The *setopt() function would still return "OK" though so the
|
||||
application couldn't tell that this is happening.
|
||||
|
||||
Users who truly need pipelining from that version will need to modify the code
|
||||
(ever so slightly) and rebuild.
|
||||
|
||||
### Removal
|
||||
|
||||
Six months later, in sync with the planned release happen in April 2019,
|
||||
(might be 7.66.0), assuming no major riots have occurred due to this in the
|
||||
mean time, we rip out the pipelining code. It is in the order of 1000 lines of
|
||||
libcurl code.
|
||||
|
||||
Left to answer: should the *setopt() function start to return error when these
|
||||
options are set to be able to tell when they're trying to use options that are
|
||||
no longer around or should we maintain behavior as much as possible?
|
||||
|
||||
## `CURLOPT_DNS_USE_GLOBAL_CACHE`
|
||||
|
||||
This option makes libcurl use a global non-thread-safe cache for DNS if
|
||||
enabled. The option has been marked as "obsolete" in the header file and in
|
||||
documentation for several years already.
|
||||
|
||||
There's proper and safe method alternative provided since many years: the
|
||||
share API.
|
||||
|
||||
### State
|
||||
|
||||
In curl 7.62.0 setting this option to TRUE will not have any effect. The
|
||||
global cache will not be enabled. The code still remains so it is easy to
|
||||
revert if need be.
|
||||
|
||||
### Removal
|
||||
|
||||
Remove all global-cache related code from curl around April 2019 (might be
|
||||
7.66.0).
|
||||
|
||||
## HTTP/0.9
|
||||
|
||||
Supporting this is non-obvious and might even come as a surprise to some
|
||||
users. Potentially even being a security risk in some cases.
|
||||
|
||||
### State
|
||||
|
||||
curl 7.64.0 introduces options to disable/enable support for this protocol
|
||||
version. The default remains supported for now.
|
||||
|
||||
### Removal
|
||||
|
||||
The support for HTTP/0.9 will be switched to disabled by default in 6 months,
|
||||
in the September 2019 release (possibly called curl 7.68.0).
|
@ -1,176 +0,0 @@
|
||||
Date: February 11, 2007
|
||||
Author: Daniel Stenberg <daniel@haxx.se>
|
||||
URL: http://curl.haxx.se/legal/distro-dilemma.html
|
||||
|
||||
Condition
|
||||
|
||||
This document is written to describe the situation as it is right now.
|
||||
libcurl 7.16.1 is currently the latest version available. Things may of
|
||||
course change in the future.
|
||||
|
||||
This document reflects my view and understanding of these things. Please tell
|
||||
me where and how you think I'm wrong, and I'll try to correct my mistakes.
|
||||
|
||||
Background
|
||||
|
||||
The Free Software Foundation has deemed the Original BSD license[1] to be
|
||||
"incompatible"[2] with GPL[3]. I'd rather say it is the other way around, but
|
||||
the point is the same: if you distribute a binary version of a GPL program,
|
||||
it MUST NOT be linked with any Original BSD-licensed parts or libraries.
|
||||
Doing so will violate the GPL license. For a long time, very many GPL
|
||||
licensed programs have avoided this license mess by adding an exception[8] to
|
||||
their license. And many others have just closed their eyes for this problem.
|
||||
|
||||
libcurl is MIT-style[4] licensed - how on earth did this dilemma fall onto
|
||||
our plates?
|
||||
|
||||
libcurl is only a little library. libcurl can be built to use OpenSSL for its
|
||||
SSL/TLS capabilities. OpenSSL is basically Original BSD licensed[5].
|
||||
|
||||
If libcurl built to use OpenSSL is used by a GPL-licensed application and you
|
||||
decide to distribute a binary version of it (Linux distros - for example -
|
||||
tend to), you have a clash. GPL vs Original BSD.
|
||||
|
||||
This dilemma is not libcurl-specific nor is it specific to any particular
|
||||
Linux distro. (This article mentions and refers to Debian several times, but
|
||||
only because Debian seems to be the only Linux distro to have faced this
|
||||
issue yet since no other distro is shipping libcurl built with two SSL
|
||||
libraries.)
|
||||
|
||||
Part of the Operating System
|
||||
|
||||
This would not be a problem if the used lib would be considered part of the
|
||||
underlying operating system, as then the GPL license has an exception
|
||||
clause[6] that allows applications to use such libs without having to be
|
||||
allowed to distribute it or its sources. Possibly some distros will claim
|
||||
that OpenSSL is part of their operating system.
|
||||
|
||||
Debian does however not take this stance and has officially(?) claimed that
|
||||
OpenSSL is not a required part of the Debian operating system
|
||||
|
||||
Some people claim that this paragraph cannot be exploited this way by a Linux
|
||||
distro, but I am not a lawyer and that is a discussion left outside of this
|
||||
document.
|
||||
|
||||
GnuTLS
|
||||
|
||||
Since May 2005 libcurl can get built to use GnuTLS instead of OpenSSL. GnuTLS
|
||||
is an LGPL[7] licensed library that offers a matching set of features as
|
||||
OpenSSL does. Now, you can build and distribute an TLS/SSL capable libcurl
|
||||
without including any Original BSD licensed code.
|
||||
|
||||
I believe Debian is the first (only?) distro that provides libcurl/GnuTLS
|
||||
packages.
|
||||
|
||||
yassl
|
||||
|
||||
libcurl can get also get built to use yassl for the TLS/SSL layer. yassl is a
|
||||
GPL[3] licensed library.
|
||||
|
||||
|
||||
GnuTLS vs OpenSSL vs yassl
|
||||
|
||||
While these three libraries offer similar features, they are not equal.
|
||||
libcurl does not (yet) offer a standardized stable ABI if you decide to
|
||||
switch from using libcurl-openssl to libcurl-gnutls or vice-versa. The GnuTLS
|
||||
and yassl support is very recent in libcurl and it has not been tested nor
|
||||
used very extensively, while the OpenSSL equivalent code has been used and
|
||||
thus matured since 1999.
|
||||
|
||||
GnuTLS
|
||||
- LGPL licensed
|
||||
- supports SRP
|
||||
- lacks SSLv2 support
|
||||
- lacks MD2 support (used by at least some CA certs)
|
||||
- lacks the crypto functions libcurl uses for NTLM
|
||||
|
||||
OpenSSL
|
||||
- Original BSD licensed
|
||||
- lacks SRP
|
||||
- supports SSLv2
|
||||
- older and more widely used
|
||||
- provides crypto functions libcurl uses for NTLM
|
||||
- libcurl can do non-blocking connects with it in 7.15.4 and later
|
||||
|
||||
yassl
|
||||
- GPL licensed
|
||||
- much untested and unproven in the real work by (lib)curl users so we don't
|
||||
know a lot about restrictions or benefits from using this
|
||||
|
||||
The Better License, Original BSD, GPL or LGPL?
|
||||
|
||||
It isn't obvious or without debate to any objective interested party that
|
||||
either of these licenses are the "better" or even the "preferred" one in a
|
||||
generic situation.
|
||||
|
||||
Instead, I think we should accept the fact that the SSL/TLS libraries and
|
||||
their different licenses will fit different applications and their authors
|
||||
differently depending on the applications' licenses and their general usage
|
||||
pattern (considering how GPL and LGPL libraries for example can be burdensome
|
||||
for embedded systems usage).
|
||||
|
||||
In Debian land, there seems to be a common opinion that LGPL is "maximally
|
||||
compatible" with apps while Original BSD is not. Like this:
|
||||
|
||||
https://lists.debian.org/debian-devel/2005/09/msg01417.html
|
||||
|
||||
More SSL Libraries
|
||||
|
||||
In libcurl, there's no stopping us here. There are more Open Source/Free
|
||||
SSL/TLS libraries out there and we would very much like to support them as
|
||||
well, to offer application authors an even wider scope of choice.
|
||||
|
||||
Application Angle of this Problem
|
||||
|
||||
libcurl is built to use one SSL/TLS library. It uses a single fixed name (by
|
||||
default) on the built/created lib file, and applications are built/linked to
|
||||
use that single lib. Replacing one libcurl instance with another one that
|
||||
uses the other SSL/TLS library might break one or more applications (due to
|
||||
ABI differences and/or different feature set). You want your application to
|
||||
use the libcurl it was built for.
|
||||
|
||||
Project cURL Angle of this Problem
|
||||
|
||||
We distribute libcurl and everyone may build libcurl with either library at
|
||||
their choice. This problem is not directly a problem of ours. It merely
|
||||
affects users - GPL application authors only - of our lib as it comes
|
||||
included and delivered on some distros.
|
||||
|
||||
libcurl has different ABI when built with different SSL/TLS libraries due to
|
||||
these reasons:
|
||||
|
||||
1. No one has worked on fixing this. The mutex/lock callbacks should be set
|
||||
with a generic libcurl function that should use the proper underlying
|
||||
functions.
|
||||
|
||||
2. The CURLOPT_SSL_CTX_FUNCTION option is not possible to "emulate" on GnuTLS
|
||||
but simply requires OpenSSL.
|
||||
|
||||
3. There might be some other subtle differences just because nobody has yet
|
||||
tried to make a fixed ABI like this.
|
||||
|
||||
Distro Angle of this Problem
|
||||
|
||||
To my knowledge there is only one distro that ships libcurl built with either
|
||||
OpenSSL or GnuTLS.
|
||||
|
||||
Debian Linux is now (since mid September 2005) providing two different
|
||||
libcurl packages, one for libcurl built with OpenSSL and one built with
|
||||
GnuTLS. They use different .so names and can this both be installed in a
|
||||
single system simultaneously. This has been said to be a transitional system
|
||||
not desired to keep in the long run.
|
||||
|
||||
Footnotes
|
||||
|
||||
[1] = http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6
|
||||
[2] = https://www.gnu.org/philosophy/bsd.html
|
||||
[3] = https://www.gnu.org/licenses/gpl.html
|
||||
[4] = http://curl.haxx.se/docs/copyright.html
|
||||
[5] = https://www.openssl.org/source/license.html
|
||||
[6] = https://www.gnu.org/licenses/gpl.html end of section 3
|
||||
[7] = https://www.gnu.org/licenses/lgpl.html
|
||||
[8] = https://en.wikipedia.org/wiki/OpenSSL_exception
|
||||
|
||||
Feedback/Updates provided by
|
||||
|
||||
Eric Cooper
|
283
curl/docs/FAQ
283
curl/docs/FAQ
@ -80,7 +80,7 @@ FAQ
|
||||
4.16 My HTTP POST or PUT requests are slow!
|
||||
4.17 Non-functional connect timeouts on Windows
|
||||
4.18 file:// URLs containing drive letters (Windows, NetWare)
|
||||
4.19 Why doesn't cURL return an error when the network cable is unplugged?
|
||||
4.19 Why doesn't curl return an error when the network cable is unplugged?
|
||||
4.20 curl doesn't return error for HTTP non-200 responses!
|
||||
4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
|
||||
|
||||
@ -117,6 +117,7 @@ FAQ
|
||||
7.1 What is PHP/CURL?
|
||||
7.2 Who wrote PHP/CURL?
|
||||
7.3 Can I perform multiple requests using the same handle?
|
||||
7.4 Does PHP/CURL have dependencies?
|
||||
|
||||
==============================================================================
|
||||
|
||||
@ -161,7 +162,7 @@ FAQ
|
||||
We pronounce curl with an initial k sound. It rhymes with words like girl
|
||||
and earl. This is a short WAV file to help you:
|
||||
|
||||
http://media.merriam-webster.com/soundc11/c/curl0001.wav
|
||||
https://media.merriam-webster.com/soundc11/c/curl0001.wav
|
||||
|
||||
There are numerous sub-projects and related projects that also use the word
|
||||
curl in the project names in various combinations, but you should take
|
||||
@ -214,20 +215,22 @@ FAQ
|
||||
another tool that uses libcurl.
|
||||
|
||||
We do not add things to curl that other small and available tools already do
|
||||
very fine at the side. Curl's output is fine to pipe into another program or
|
||||
redirect to another file for the next program to interpret.
|
||||
very well at the side. Curl's output can be piped into another program or
|
||||
redirected to another file for the next program to interpret.
|
||||
|
||||
We focus on protocol related issues and improvements. If you wanna do more
|
||||
magic with the supported protocols than curl currently does, chances are big
|
||||
we will agree. If you wanna add more protocols, we may very well agree.
|
||||
We focus on protocol related issues and improvements. If you want to do more
|
||||
magic with the supported protocols than curl currently does, chances are good
|
||||
we will agree. If you want to add more protocols, we may very well agree.
|
||||
|
||||
If you want someone else to make all the work while you wait for us to
|
||||
If you want someone else to do all the work while you wait for us to
|
||||
implement it for you, that is not a very friendly attitude. We spend a
|
||||
considerable time already on maintaining and developing curl. In order to
|
||||
get more out of us, you should consider trading in some of your time and
|
||||
efforts in return.
|
||||
effort in return. Simply go to the GitHub repo which resides at
|
||||
https://github.com/curl/curl, fork the project, and create pull requests
|
||||
with your proposed changes.
|
||||
|
||||
If you write the code, chances are bigger that it will get into curl faster.
|
||||
If you write the code, chances are better that it will get into curl faster.
|
||||
|
||||
1.5 Who makes curl?
|
||||
|
||||
@ -235,7 +238,7 @@ FAQ
|
||||
project leader and main developer, but other persons' submissions are
|
||||
important and crucial. Anyone can contribute and post their changes and
|
||||
improvements and have them inserted in the main sources (of course on the
|
||||
condition that developers agree on that the fixes are good).
|
||||
condition that developers agree that the fixes are good).
|
||||
|
||||
The full list of all contributors is found in the docs/THANKS file.
|
||||
|
||||
@ -244,23 +247,23 @@ FAQ
|
||||
1.6 What do you get for making curl?
|
||||
|
||||
Project cURL is entirely free and open. No person gets paid for developing
|
||||
curl on full time. We do this voluntarily, mostly on spare time.
|
||||
curl full time. We do this voluntarily, mostly in our spare time.
|
||||
Occasionally companies pay individual developers to work on curl, but that's
|
||||
up to each company and developer. It is not controlled by nor supervised in
|
||||
up to each company and developer. This is not controlled by nor supervised in
|
||||
any way by the project.
|
||||
|
||||
We still get help from companies. Haxx provides web site, bandwidth, mailing
|
||||
lists etc, sourceforge.net hosts project services we take advantage from,
|
||||
like the bug tracker and github hosts the primary git repository. Also
|
||||
again, some companies have sponsored certain parts of the development in the
|
||||
past and I hope some will continue to do so in the future.
|
||||
lists etc, GitHub hosts the primary git repository and other services like
|
||||
the bug tracker at https://github.com/curl/curl. Also again, some companies
|
||||
have sponsored certain parts of the development in the past and I hope some
|
||||
will continue to do so in the future.
|
||||
|
||||
If you want to support our project, consider a donation or a banner-program
|
||||
or even better: by helping us coding, documenting, testing etc.
|
||||
or even better: by helping us with coding, documenting or testing etc.
|
||||
|
||||
1.7 What about CURL from curl.com?
|
||||
|
||||
During the summer 2001, curl.com was busy advertising their client-side
|
||||
During the summer of 2001, curl.com was busy advertising their client-side
|
||||
programming language for the web, named CURL.
|
||||
|
||||
We are in no way associated with curl.com or their CURL programming
|
||||
@ -273,16 +276,16 @@ FAQ
|
||||
We recognize that we will be living in parallel with curl.com and wish them
|
||||
every success.
|
||||
|
||||
1.8 I have a problem who do I mail?
|
||||
1.8 I have a problem whom 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
|
||||
lists are listed in the MANUAL document and online at
|
||||
http://curl.haxx.se/mail/
|
||||
https://curl.haxx.se/mail/
|
||||
|
||||
Keeping curl-related questions and discussions on mailing lists allows
|
||||
others to join in and help, to share their ideas, contribute their
|
||||
suggestions and spread their wisdom. Keeping discussions on public mailing
|
||||
others to join in and help, to share their ideas, to contribute their
|
||||
suggestions and to spread their wisdom. Keeping discussions on public mailing
|
||||
lists also allows for others to learn from this (both current and future
|
||||
users thanks to the web based archives of the mailing lists), thus saving us
|
||||
from having to repeat ourselves even more. Thanks for respecting this.
|
||||
@ -299,7 +302,7 @@ FAQ
|
||||
your curl-related problems.
|
||||
|
||||
We list available alternatives on the curl web site:
|
||||
http://curl.haxx.se/support.html
|
||||
https://curl.haxx.se/support.html
|
||||
|
||||
1.10 How many are using curl?
|
||||
|
||||
@ -316,13 +319,13 @@ FAQ
|
||||
In May 2012 Daniel did a counting game and came up with a number that may
|
||||
be completely wrong or somewhat accurate. Over 500 million!
|
||||
|
||||
See http://daniel.haxx.se/blog/2012/05/16/300m-users/
|
||||
See https://daniel.haxx.se/blog/2012/05/16/300m-users/
|
||||
|
||||
1.11 Why don't you update ca-bundle.crt
|
||||
|
||||
The ca cert bundle that used to shipped with curl was very outdated and must
|
||||
be replaced with an up-to-date version by anyone who wants to verify
|
||||
peers. It is no longer provided by curl. The last curl release ever that
|
||||
The ca cert bundle that used to be shipped with curl was very outdated and
|
||||
must be replaced with an up-to-date version by anyone who wants to verify
|
||||
peers. It is no longer provided by curl. The last curl release that ever
|
||||
shipped a ca cert bundle was curl 7.18.0.
|
||||
|
||||
In the cURL project we've decided not to attempt to keep this file updated
|
||||
@ -338,12 +341,12 @@ FAQ
|
||||
If you want the most recent collection of ca certs that Mozilla Firefox
|
||||
uses, we recommend that you extract the collection yourself from Mozilla
|
||||
Firefox (by running 'make ca-bundle), or by using our online service setup
|
||||
for this purpose: http://curl.haxx.se/docs/caextract.html
|
||||
for this purpose: https://curl.haxx.se/docs/caextract.html
|
||||
|
||||
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
|
||||
IRC network irc.freenode.net. If you're polite and nice, chances are big
|
||||
IRC network irc.freenode.net. If you're polite and nice, chances are good
|
||||
that you can get -- or provide -- help instantly.
|
||||
|
||||
1.13 curl's ECCN number?
|
||||
@ -352,19 +355,21 @@ FAQ
|
||||
cryptography. When doing so, the Export Control Classification Number (ECCN)
|
||||
is used to identify the level of export control etc.
|
||||
|
||||
ASF gives a good explanation at https://www.apache.org/dev/crypto.html
|
||||
Apache Software Foundation gives a good explanation of ECCNs at
|
||||
https://www.apache.org/dev/crypto.html
|
||||
|
||||
We believe curl's number might be ECCN 5D002, another possibility is
|
||||
5D992. It seems necessary to write them, asking to confirm.
|
||||
5D992. It seems necessary to write them (the authority that administers ECCN
|
||||
numbers), asking to confirm.
|
||||
|
||||
Comprehensible explanations of the meaning of such numbers and how to
|
||||
obtain them (resp.) are here
|
||||
Comprehensible explanations of the meaning of such numbers and how to obtain
|
||||
them (resp.) are here
|
||||
|
||||
http://www.bis.doc.gov/licensing/exportingbasics.htm
|
||||
http://www.bis.doc.gov/licensing/do_i_needaneccn.html
|
||||
https://www.bis.doc.gov/licensing/exportingbasics.htm
|
||||
https://www.bis.doc.gov/licensing/do_i_needaneccn.html
|
||||
|
||||
An incomprehensible description of the two numbers above is here
|
||||
http://www.access.gpo.gov/bis/ear/pdf/ccl5-pt2.pdf
|
||||
https://www.bis.doc.gov/index.php/documents/new-encryption/1653-ccl5-pt2-3
|
||||
|
||||
1.14 How do I submit my patch?
|
||||
|
||||
@ -424,7 +429,7 @@ FAQ
|
||||
2.1.2 only the libssl lib is missing
|
||||
|
||||
If all include files and the libcrypto lib is present, with only the
|
||||
libssl being missing according to configure, this is mostly likely because
|
||||
libssl being missing according to configure, this is most likely because
|
||||
a few functions are left out from the libssl.
|
||||
|
||||
If the function names missing include RSA or RSAREF you can be certain
|
||||
@ -441,10 +446,10 @@ FAQ
|
||||
backends.
|
||||
|
||||
curl can be built to use one of the following SSL alternatives: OpenSSL,
|
||||
GnuTLS, yassl, NSS, PolarSSL, axTLS, Secure Transport (native iOS/OS X),
|
||||
WinSSL (native Windows) or GSKit (native IBM i). They all have their pros
|
||||
and cons, and we try to maintain a comparison of them here:
|
||||
http://curl.haxx.se/docs/ssl-compared.html
|
||||
libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
|
||||
Transport (native iOS/OS X), Schannel (native Windows) or GSKit (native IBM
|
||||
i). They all have their pros and cons, and we try to maintain a comparison
|
||||
of them here: https://curl.haxx.se/docs/ssl-compared.html
|
||||
|
||||
2.3 Where can I find a copy of LIBEAY32.DLL?
|
||||
|
||||
@ -478,7 +483,7 @@ FAQ
|
||||
and logs and check out why the configure script doesn't find the SSL libs
|
||||
and/or include files.
|
||||
|
||||
Also, check out the other paragraph in this FAQ labelled "configure doesn't
|
||||
Also, check out the other paragraph in this FAQ labeled "configure doesn't
|
||||
find OpenSSL even when it is installed".
|
||||
|
||||
3.2 How do I tell curl to resume a transfer?
|
||||
@ -488,11 +493,14 @@ FAQ
|
||||
|
||||
3.3 Why doesn't my posting using -F work?
|
||||
|
||||
You can't simply use -F or -d at your choice. The web server that will
|
||||
receive your post expects one of the formats. If the form you're trying to
|
||||
submit uses the type 'multipart/form-data', then and only then you must use
|
||||
the -F type. In all the most common cases, you should use -d which then
|
||||
causes a posting with the type 'application/x-www-form-urlencoded'.
|
||||
You can't arbitrarily use -F or -d, the choice between -F or -d depends on the
|
||||
HTTP operation you need curl to do and what the web server that will receive
|
||||
your post expects.
|
||||
|
||||
If the form you're trying to submit uses the type 'multipart/form-data', then
|
||||
and only then you must use the -F type. In all the most common cases, you
|
||||
should use -d which then causes a posting with the type
|
||||
'application/x-www-form-urlencoded'.
|
||||
|
||||
This is described in some detail in the MANUAL and TheArtOfHttpScripting
|
||||
documents, and if you don't understand it the first time, read it again
|
||||
@ -556,7 +564,7 @@ FAQ
|
||||
|
||||
Find out more about which languages that support curl directly, and how to
|
||||
install and use them, in the libcurl section of the curl web site:
|
||||
http://curl.haxx.se/libcurl/
|
||||
https://curl.haxx.se/libcurl/
|
||||
|
||||
All the various bindings to libcurl are made by other projects and people,
|
||||
outside of the cURL project. The cURL project itself only produces libcurl
|
||||
@ -564,13 +572,14 @@ FAQ
|
||||
about bindings on the curl-library list too, but be prepared that people on
|
||||
that list may not know anything about bindings.
|
||||
|
||||
In October 2009, there were interfaces available for the following
|
||||
languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Dylan, Eiffel, Euphoria,
|
||||
Ferite, Gambas, glib/GTK+, Haskell, ILE/RPG, Java, Lisp, Lua, Mono, .NET,
|
||||
Object-Pascal, O'Caml, Pascal, Perl, PHP, PostgreSQL, Python, R, Rexx, Ruby,
|
||||
Scheme, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro,
|
||||
Q, wxwidgets and XBLite. By the time you read this, additional ones may have
|
||||
appeared!
|
||||
In February 2019, there were interfaces available for the following
|
||||
languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Delphi, Dylan, Eiffel,
|
||||
Euphoria, Falcon, Ferite, Gambas, glib/GTK+, Go, Guile, Harbour, Haskell,
|
||||
Java, Julia, Lisp, Lua, Mono, .NET, node.js, Object-Pascal, OCaml, Pascal,
|
||||
Perl, PHP, PostgreSQL, Python, R, Rexx, Ring, RPG, Ruby, Rust, Scheme,
|
||||
Scilab, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro,
|
||||
Q, wxwidgets, XBLite and Xoho. By the time you read this, additional ones
|
||||
may have appeared!
|
||||
|
||||
3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP?
|
||||
|
||||
@ -579,7 +588,7 @@ FAQ
|
||||
XML-RPC are all such ones. You can use -X to set custom requests and -H to
|
||||
set custom headers (or replace internally generated ones).
|
||||
|
||||
Using libcurl is of course just as fine and you'd just use the proper
|
||||
Using libcurl is of course just as good and you'd just use the proper
|
||||
library options to do the same.
|
||||
|
||||
3.11 How do I POST with a different Content-Type?
|
||||
@ -599,7 +608,7 @@ FAQ
|
||||
There is one exception to this rule, and that is if you can "tunnel through"
|
||||
the given HTTP proxy. Proxy tunneling is enabled with a special option (-p)
|
||||
and is generally not available as proxy admins usually disable tunneling to
|
||||
other ports than 443 (which is used for HTTPS access through proxies).
|
||||
ports other than 443 (which is used for HTTPS access through proxies).
|
||||
|
||||
3.13 Why does my single/double quotes fail?
|
||||
|
||||
@ -618,7 +627,7 @@ FAQ
|
||||
Windows/DOS prompts I believe you're forced to use double (") quotes.
|
||||
|
||||
Please study the documentation for your particular environment. Examples in
|
||||
the curl docs will use a mix of both these ones as shown above. You must
|
||||
the curl docs will use a mix of both of these as shown above. You must
|
||||
adjust them to work in your environment.
|
||||
|
||||
Remember that curl works and runs on more operating systems than most single
|
||||
@ -653,7 +662,7 @@ FAQ
|
||||
No. curl itself has no code that performs recursive operations, such as
|
||||
those performed by wget and similar tools.
|
||||
|
||||
There exist wrapper scripts with that functionality (for example the
|
||||
There exists wrapper scripts with that functionality (for example the
|
||||
curlmirror perl script), and you can write programs based on libcurl to do
|
||||
it, but the command line tool curl itself cannot.
|
||||
|
||||
@ -664,9 +673,9 @@ FAQ
|
||||
|
||||
CLIENT CERTIFICATE
|
||||
|
||||
The server you communicate may require that you can provide this in order to
|
||||
prove that you actually are who you claim to be. If the server doesn't
|
||||
require this, you don't need a client certificate.
|
||||
The server you communicate with may require that you can provide this in
|
||||
order to prove that you actually are who you claim to be. If the server
|
||||
doesn't require this, you don't need a client certificate.
|
||||
|
||||
A client certificate is always used together with a private key, and the
|
||||
private key has a pass phrase that protects it.
|
||||
@ -689,7 +698,7 @@ FAQ
|
||||
certificate. Server certificate verification is enabled by default in curl
|
||||
and libcurl and is often the reason for problems as explained in FAQ entry
|
||||
4.12 and the SSLCERTS document
|
||||
(http://curl.haxx.se/docs/sslcerts.html). Server certificates that are
|
||||
(https://curl.haxx.se/docs/sslcerts.html). Server certificates that are
|
||||
"self-signed" or otherwise signed by a CA that you do not have a CA cert
|
||||
for, cannot be verified. If the verification during a connect fails, you are
|
||||
refused access. You then need to explicitly disable the verification to
|
||||
@ -737,7 +746,7 @@ FAQ
|
||||
directory, you get the actual root directory.
|
||||
|
||||
To specify a file in your user's home directory, you need to use the correct
|
||||
URL syntax which for sftp might look similar to:
|
||||
URL syntax which for SFTP might look similar to:
|
||||
|
||||
curl -O -u user:password sftp://example.com/~/file.txt
|
||||
|
||||
@ -827,14 +836,14 @@ FAQ
|
||||
|
||||
4.3 How can I use {, }, [ or ] to specify multiple URLs?
|
||||
|
||||
Because those letters have a special meaning to the shell, and to be used in
|
||||
Because those letters have a special meaning to the shell, to be used in
|
||||
a URL specified to curl you must quote them.
|
||||
|
||||
An example that downloads two URLs (sequentially) would do:
|
||||
An example that downloads two URLs (sequentially) would be:
|
||||
|
||||
curl '{curl,www}.haxx.se'
|
||||
|
||||
To be able to use those letters as actual parts of the URL (without using
|
||||
To be able to use those characters as actual parts of the URL (without using
|
||||
them for the curl URL "globbing" system), use the -g/--globoff option:
|
||||
|
||||
curl -g 'www.site.com/weirdname[].html'
|
||||
@ -865,7 +874,7 @@ FAQ
|
||||
|
||||
4.5.3 "403 Forbidden"
|
||||
|
||||
The server understood the request, but is refusing to fulfil it.
|
||||
The server understood the request, but is refusing to fulfill it.
|
||||
Authorization will not help and the request SHOULD NOT be repeated.
|
||||
|
||||
4.5.4 "404 Not Found"
|
||||
@ -936,8 +945,8 @@ FAQ
|
||||
|
||||
4.9 Curl can't authenticate to the server that requires NTLM?
|
||||
|
||||
NTLM support requires OpenSSL, GnuTLS, NSS, Secure Transport, or Microsoft
|
||||
Windows libraries at build-time to provide this functionality.
|
||||
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.
|
||||
@ -980,18 +989,20 @@ FAQ
|
||||
this check.
|
||||
|
||||
Details are also in the SSLCERTS file in the release archives, found online
|
||||
here: http://curl.haxx.se/docs/sslcerts.html
|
||||
here: https://curl.haxx.se/docs/sslcerts.html
|
||||
|
||||
4.13 Why is curl -R on Windows one hour off?
|
||||
|
||||
During daylight savings time, when -R is used, curl will set a time that
|
||||
appears one hour off. This happens due to a flaw in how Windows stores and
|
||||
uses file modification times and it is not easily worked around. For details
|
||||
on this problem, read this: http://www.codeproject.com/datetime/dstbugs.asp
|
||||
Since curl 7.53.0 this issue should be fixed as long as curl was built with
|
||||
any modern compiler that allows for a 64-bit curl_off_t type. For older
|
||||
compilers or prior curl versions it may set a time that appears one hour off.
|
||||
This happens due to a flaw in how Windows stores and uses file modification
|
||||
times and it is not easily worked around. For more details read this:
|
||||
https://www.codeproject.com/Articles/1144/Beating-the-Daylight-Savings-Time-bug-and-getting
|
||||
|
||||
4.14 Redirects work in browser but not with curl!
|
||||
|
||||
curl supports HTTP redirects fine (see item 3.8). Browsers generally support
|
||||
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
|
||||
@ -1014,8 +1025,8 @@ FAQ
|
||||
speak SSL. FTPS:// connections default to port 990.
|
||||
|
||||
To use explicit FTPS, you use a FTP:// URL and the --ftp-ssl option (or one
|
||||
of its related flavours). This is the most common method, and the one
|
||||
mandated by RFC4217. This kind of connection then of course uses the
|
||||
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.
|
||||
|
||||
4.16 My HTTP POST or PUT requests are slow!
|
||||
@ -1023,7 +1034,7 @@ FAQ
|
||||
libcurl makes all POST and PUT requests (except for POST requests with a
|
||||
very tiny request body) use the "Expect: 100-continue" header. This header
|
||||
allows the server to deny the operation early so that libcurl can bail out
|
||||
already before having to send any data. This is useful in authentication
|
||||
before having to send any data. This is useful in authentication
|
||||
cases and others.
|
||||
|
||||
However, many servers don't implement the Expect: stuff properly and if the
|
||||
@ -1051,18 +1062,18 @@ FAQ
|
||||
|
||||
4.18 file:// URLs containing drive letters (Windows, NetWare)
|
||||
|
||||
When using cURL to try to download a local file, one might use a URL
|
||||
When using curl to try to download a local file, one might use a URL
|
||||
in this format:
|
||||
|
||||
file://D:/blah.txt
|
||||
|
||||
You'll find that even if D:\blah.txt does exist, cURL returns a 'file
|
||||
You'll find that even if D:\blah.txt does exist, curl returns a 'file
|
||||
not found' error.
|
||||
|
||||
According to RFC 1738 (https://www.ietf.org/rfc/rfc1738.txt),
|
||||
file:// URLs must contain a host component, but it is ignored by
|
||||
most implementations. In the above example, 'D:' is treated as the
|
||||
host component, and is taken away. Thus, cURL tries to open '/blah.txt'.
|
||||
host component, and is taken away. Thus, curl tries to open '/blah.txt'.
|
||||
If your system is installed to drive C:, that will resolve to 'C:\blah.txt',
|
||||
and if that doesn't exist you will get the not found error.
|
||||
|
||||
@ -1075,9 +1086,9 @@ FAQ
|
||||
|
||||
file://localhost/D:/blah.txt
|
||||
|
||||
In either case, cURL should now be looking for the correct file.
|
||||
In either case, curl should now be looking for the correct file.
|
||||
|
||||
4.19 Why doesn't cURL return an error when the network cable is unplugged?
|
||||
4.19 Why doesn't curl return an error when the network cable is unplugged?
|
||||
|
||||
Unplugging a cable is not an error situation. The TCP/IP protocol stack
|
||||
was designed to be fault tolerant, so even though there may be a physical
|
||||
@ -1087,7 +1098,7 @@ FAQ
|
||||
|
||||
In such cases, the TCP/IP stack is responsible for detecting when the
|
||||
network connection is irrevocably lost. Since with some protocols it is
|
||||
perfectly legal for the client wait indefinitely for data, the stack may
|
||||
perfectly legal for the client to wait indefinitely for data, the stack may
|
||||
never report a problem, and even when it does, it can take up to 20 minutes
|
||||
for it to detect an issue. The curl option --keepalive-time enables
|
||||
keep-alive support in the TCP/IP stack which makes it periodically probe the
|
||||
@ -1105,7 +1116,7 @@ FAQ
|
||||
an embedded device with only a single network connection) may want to act
|
||||
immediately if its lone network connection goes down. That can be achieved
|
||||
by having the application monitor the network connection on its own using an
|
||||
OS-specific mechanism, then signalling libcurl to abort (see also item 5.13).
|
||||
OS-specific mechanism, then signaling libcurl to abort (see also item 5.13).
|
||||
|
||||
4.20 curl doesn't return error for HTTP non-200 responses!
|
||||
|
||||
@ -1114,7 +1125,7 @@ FAQ
|
||||
When doing HTTP transfers, curl will perform exactly what you're asking it
|
||||
to do and if successful it will not return an error. You can use curl to
|
||||
test your web server's "file not found" page (that gets 404 back), you can
|
||||
use it to check your authentication protected web pages (that get a 401
|
||||
use it to check your authentication protected web pages (that gets a 401
|
||||
back) and so on.
|
||||
|
||||
The specific HTTP response code does not constitute a problem or error for
|
||||
@ -1129,7 +1140,7 @@ FAQ
|
||||
libcurl speak).
|
||||
|
||||
You can also use the -w option and the variable %{response_code} to extract
|
||||
the exact response code that was return in the response.
|
||||
the exact response code that was returned in the response.
|
||||
|
||||
4.21 Why is there a HTTP/1.1 in my HTTP/2 request?
|
||||
|
||||
@ -1139,8 +1150,8 @@ FAQ
|
||||
The reason for this is that we first generate the request to send using the
|
||||
old 1.1 style and show that request in the verbose output, and then we
|
||||
convert it over to the binary header-compressed HTTP/2 style. The actual
|
||||
"1.1" part from that request is then not actually used in the transfer. The
|
||||
binary HTTP/2 headers are not human readable.
|
||||
"1.1" part from that request is then not actually used in the transfer.
|
||||
The binary HTTP/2 headers are not human readable.
|
||||
|
||||
5. libcurl Issues
|
||||
|
||||
@ -1153,25 +1164,9 @@ FAQ
|
||||
your system has such. Note that you must never share the same handle in
|
||||
multiple threads.
|
||||
|
||||
libcurl's implementation of timeouts might use signals (depending on what it
|
||||
was built to use for name resolving), and signal handling is generally not
|
||||
thread-safe. Multi-threaded Applicationss that call libcurl from different
|
||||
threads (on different handles) might want to use CURLOPT_NOSIGNAL, e.g.:
|
||||
|
||||
curl_easy_setopt(handle, CURLOPT_NOSIGNAL, true);
|
||||
|
||||
If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
|
||||
need to provide one or two locking functions:
|
||||
|
||||
https://www.openssl.org/docs/crypto/threads.html
|
||||
|
||||
If you use a GnuTLS-powered libcurl in a multi-threaded environment, you
|
||||
need to provide locking function(s) for libgcrypt (which is used by GnuTLS
|
||||
for the crypto functions).
|
||||
|
||||
https://web.archive.org/web/20111103083330/http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
|
||||
|
||||
No special locking is needed with a NSS-powered libcurl. NSS is thread-safe.
|
||||
There may be some exceptions to thread safety depending on how libcurl was
|
||||
built. Please review the guidelines for thread safety to learn more:
|
||||
https://curl.haxx.se/libcurl/c/threadsafe.html
|
||||
|
||||
5.2 How can I receive all data into a large memory chunk?
|
||||
|
||||
@ -1238,10 +1233,10 @@ FAQ
|
||||
libcurl will reuse connections for all transfers that are made using the
|
||||
same libcurl handle.
|
||||
|
||||
When you use the easy interface, the connection cache is kept within the
|
||||
easy handle. If you instead use the multi interface, the connection cache
|
||||
will be kept within the multi handle and will be shared among all the easy
|
||||
handles that are used within the same multi handle.
|
||||
When you use the easy interface the connection cache is kept within the easy
|
||||
handle. If you instead use the multi interface, the connection cache will be
|
||||
kept within the multi handle and will be shared among all the easy handles
|
||||
that are used within the same multi handle.
|
||||
|
||||
5.7 Link errors when building libcurl on Windows!
|
||||
|
||||
@ -1300,8 +1295,8 @@ FAQ
|
||||
you want to change name resolver function you must rebuild libcurl and tell
|
||||
it to use a different function.
|
||||
|
||||
- The non-IPv6 resolver that can use one out of four host name resolve calls
|
||||
(depending on what your system supports):
|
||||
- The non-IPv6 resolver that can use one of four different host name resolve
|
||||
calls (depending on what your system supports):
|
||||
|
||||
A - gethostbyname()
|
||||
B - gethostbyname_r() with 3 arguments
|
||||
@ -1335,7 +1330,7 @@ FAQ
|
||||
5.12 Can I make libcurl fake or hide my real IP address?
|
||||
|
||||
No. libcurl operates on a higher level. Besides, faking IP address would
|
||||
imply sending IP packet with a made-up source address, and then you normally
|
||||
imply sending IP packets with a made-up source address, and then you normally
|
||||
get a problem with receiving the packet sent back as they would then not be
|
||||
routed to you!
|
||||
|
||||
@ -1365,18 +1360,18 @@ FAQ
|
||||
|
||||
libcurl is a C library, it doesn't know anything about C++ member functions.
|
||||
|
||||
You can overcome this "limitation" with a relative ease using a static
|
||||
You can overcome this "limitation" with relative ease using a static
|
||||
member function that is passed a pointer to the class:
|
||||
|
||||
// f is the pointer to your object.
|
||||
static YourClass::func(void *buffer, size_t sz, size_t n, void *f)
|
||||
static size_t YourClass::func(void *buffer, size_t sz, size_t n, void *f)
|
||||
{
|
||||
// Call non-static member function.
|
||||
static_cast<YourClass*>(f)->nonStaticFunction();
|
||||
}
|
||||
|
||||
// This is how you pass pointer to the static function:
|
||||
curl_easy_setopt(hcurl, CURLOPT_WRITEFUNCTION, YourClass:func);
|
||||
curl_easy_setopt(hcurl, CURLOPT_WRITEFUNCTION, YourClass::func);
|
||||
curl_easy_setopt(hcurl, CURLOPT_WRITEDATA, this);
|
||||
|
||||
5.15 How do I get an FTP directory listing?
|
||||
@ -1386,18 +1381,28 @@ FAQ
|
||||
CURLOPT_CUSTOMREQUEST to alter what exact listing command libcurl would use
|
||||
to list the files.
|
||||
|
||||
The follow-up question that tend to follow the previous one, is how a
|
||||
program is 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. The harsh reality is that
|
||||
FTP provides no such fine and easy-to-parse output. The output format FTP
|
||||
servers respond to LIST commands are entirely at the server's own liking and
|
||||
the NLST output doesn't reveal any types and in many cases don't 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.
|
||||
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're given. The LIST output format is entirely
|
||||
at the server's own liking and the NLST output doesn't reveal any types and
|
||||
in many cases doesn't 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.
|
||||
|
||||
The application thus needs to parse the LIST output. One such existing
|
||||
list parser is available at http://cr.yp.to/ftpparse.html Versions of
|
||||
Example - List only directories.
|
||||
ftp.funet.fi supports MLSD and ftp.kernel.org does not:
|
||||
|
||||
curl -s ftp.funet.fi/pub/ -X MLSD | \
|
||||
perl -lne 'print if s/(?:^|;)type=dir;[^ ]+ (.+)$/$1/'
|
||||
|
||||
curl -s ftp.kernel.org/pub/linux/kernel/ | \
|
||||
perl -lne 'print if s/^d[-rwx]{9}(?: +[^ ]+){7} (.+)$/$1/'
|
||||
|
||||
If you need to parse LIST output in libcurl one such existing
|
||||
list parser is available at https://cr.yp.to/ftpparse.html Versions of
|
||||
libcurl since 7.21.0 also provide the ability to specify a wildcard to
|
||||
download multiple files from one FTP directory.
|
||||
|
||||
@ -1413,7 +1418,7 @@ FAQ
|
||||
timed out.
|
||||
|
||||
The most flexible way is by writing your own time-out logic and using
|
||||
CURLOPT_PROGRESSFUNCTION (perhaps in combination with other callbacks) and
|
||||
CURLOPT_XFERINFOFUNCTION (perhaps in combination with other callbacks) and
|
||||
use that to figure out exactly when the right condition is met when the
|
||||
transfer should get stopped.
|
||||
|
||||
@ -1516,7 +1521,7 @@ FAQ
|
||||
notice" somewhere. Most probably like in the documentation or in the section
|
||||
where other third party dependencies already are mentioned and acknowledged.
|
||||
|
||||
As can be seen here: http://curl.haxx.se/docs/companies.html and elsewhere,
|
||||
As can be seen here: https://curl.haxx.se/docs/companies.html and elsewhere,
|
||||
more and more companies are discovering the power of libcurl and take
|
||||
advantage of it even in commercial environments.
|
||||
|
||||
@ -1536,9 +1541,7 @@ FAQ
|
||||
|
||||
7.2 Who wrote PHP/CURL?
|
||||
|
||||
PHP/CURL is a module that comes with the regular PHP package. It depends and
|
||||
uses libcurl, so you need to have libcurl installed properly first before
|
||||
PHP/CURL can be used. PHP/CURL was initially written by Sterling Hughes.
|
||||
PHP/CURL was initially written by Sterling Hughes.
|
||||
|
||||
7.3 Can I perform multiple requests using the same handle?
|
||||
|
||||
@ -1547,4 +1550,10 @@ FAQ
|
||||
unknown to me).
|
||||
|
||||
After a transfer, you just set new options in the handle and make another
|
||||
transfer. This will make libcurl to re-use the same connection if it can.
|
||||
transfer. This will make libcurl re-use the same connection if it can.
|
||||
|
||||
7.4 Does PHP/CURL have dependencies?
|
||||
|
||||
PHP/CURL is a module that comes with the regular PHP package. It depends on
|
||||
and uses libcurl, so you need to have libcurl installed properly before
|
||||
PHP/CURL can be used.
|
||||
|
@ -183,9 +183,8 @@ IMAPS (*1)
|
||||
FOOTNOTES
|
||||
=========
|
||||
|
||||
*1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL, WinSSL (native
|
||||
Windows), Secure Transport (native iOS/OS X) or GSKit (native IBM i)
|
||||
*2 = requires OpenLDAP
|
||||
*1 = requires a TLS library
|
||||
*2 = requires OpenLDAP or WinLDAP
|
||||
*3 = requires a GSS-API implementation (such as Heimdal or MIT Kerberos) or
|
||||
SSPI (native Windows)
|
||||
*4 = requires a GSS-API implementation, however, only Windows SSPI is
|
||||
@ -195,10 +194,9 @@ FOOTNOTES
|
||||
*7 = requires OpenSSL, NSS, GSKit, WinSSL or Secure Transport; GnuTLS, for
|
||||
example, only supports SSLv3 and TLSv1
|
||||
*8 = requires libssh2
|
||||
*9 = requires OpenSSL, GnuTLS, NSS, yassl, Secure Transport or SSPI (native
|
||||
Windows)
|
||||
*10 = requires any of the SSL libraries in (*1) above other than axTLS, which
|
||||
does not support SSLv3
|
||||
*9 = requires OpenSSL, GnuTLS, mbedTLS, NSS, yassl, Secure Transport or SSPI
|
||||
(native Windows)
|
||||
*10 = requires an SSL library that supports SSLv3
|
||||
*11 = requires libidn or Windows
|
||||
*12 = requires libz
|
||||
*13 = requires libmetalink, and either an Apple or Microsoft operating
|
||||
|
144
curl/docs/GOVERNANCE.md
Normal file
144
curl/docs/GOVERNANCE.md
Normal file
@ -0,0 +1,144 @@
|
||||
# Decision making in the curl project
|
||||
|
||||
A rough guide to how we make decisions and who does what.
|
||||
|
||||
## BDFL
|
||||
|
||||
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
|
||||
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
|
||||
expects from us.
|
||||
|
||||
## Legal entity
|
||||
|
||||
There is no legal entity. The curl project is just a bunch of people scattered
|
||||
around the globe with the common goal to produce source code that creates
|
||||
great products.
|
||||
|
||||
The copyrights in the project are owned by the individuals and organizations
|
||||
that wrote those parts of the code.
|
||||
|
||||
## Decisions
|
||||
|
||||
The curl project is not a democracy, but everyone is entitled to state their
|
||||
opinion and may argue for their sake within the community.
|
||||
|
||||
All and any changes that have been done or will be done are eligible to bring
|
||||
up for discussion, to object to or to praise. Ideally, we find consensus for
|
||||
the appropriate way forward in any given situation or challenge.
|
||||
|
||||
If there is no obvious consensus, a maintainer who's knowledgeable in the
|
||||
specific area will take an "executive" decision that they think is the right
|
||||
for the project.
|
||||
|
||||
## Key roles
|
||||
|
||||
### Maintainers
|
||||
|
||||
A maintainer in the curl project is an individual who has been given
|
||||
permissions to push commits to one of the git repositories.
|
||||
|
||||
Maintainers are free to push commits to the repositories at their own will.
|
||||
Maintainers are however expected to listen to feedback from users and any
|
||||
change that is non-trivial in size or nature *should* be brought to the
|
||||
project as a PR to allow others to comment/object before merge.
|
||||
|
||||
### Former maintainers
|
||||
|
||||
A maintainer who stops being active in the project will at some point get
|
||||
their push permissions removed. We do this for security reasons but also to
|
||||
make sure that we always have the list of maintainers as "the team that push
|
||||
stuff to curl".
|
||||
|
||||
Getting push permissions removed is not a punishment. Everyone who ever worked
|
||||
on maintaining curl is considered a hero, for all time hereafter.
|
||||
|
||||
### Security team members
|
||||
|
||||
We have a security team. That's the team of people who are subscribed to the
|
||||
curl-security mailing list; the receivers of security reports from users and
|
||||
developers. This list of people will vary over time but should be skilled
|
||||
developers familiar with the curl project.
|
||||
|
||||
The security team works best when it consists of a small set of active
|
||||
persons. We invite new members when the team seems to need it, and we also
|
||||
expect to retire security team members as they "drift off" from the project or
|
||||
just find themselves unable to perform their duties there.
|
||||
|
||||
### Server admins
|
||||
|
||||
We run a web server, a mailing list and more on the curl project's primary
|
||||
server. That physical machine is owned and run by Haxx. Daniel is the primary
|
||||
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.
|
||||
|
||||
The web site contents are served to the web via Fastly and Daniel is the
|
||||
primary curl contact with Fastly.
|
||||
|
||||
### BDFL
|
||||
|
||||
That's Daniel.
|
||||
|
||||
# Maintainers
|
||||
|
||||
A curl maintainer is a project volunteer who has the authority and rights to
|
||||
merge changes into a git repository in the curl project.
|
||||
|
||||
Anyone can aspire to become a curl maintainer.
|
||||
|
||||
### Duties
|
||||
|
||||
There are no mandatory duties. We hope and wish that maintainers consider
|
||||
reviewing patches and help merging them, especially when the changes are
|
||||
within the area of personal expertise and experience.
|
||||
|
||||
### Requirements
|
||||
|
||||
- only merge code that meets our quality and style guide requirements.
|
||||
- *never* merge code without doing a PR first, unless the change is "trivial"
|
||||
- if in doubt, ask for input/feedback from others
|
||||
|
||||
### Recommendations
|
||||
|
||||
- please enable 2fa on your github account to reduce risk of malicious source
|
||||
code tampering
|
||||
- consider enabling signed git commits for additional verification of changes
|
||||
|
||||
### Merge advice
|
||||
|
||||
When you're merging patches/PRs...
|
||||
|
||||
- make sure the commit messages follow our template
|
||||
- squash patch sets into a few logical commits even if the PR didn't, if
|
||||
necessary
|
||||
- avoid the "merge" button on github, do it "manually" instead to get full
|
||||
control and full audit trail (github leaves out you as "Committer:")
|
||||
- remember to credit the reporter and the helpers!
|
||||
|
||||
## Who are maintainers?
|
||||
|
||||
The [list of maintainers](https://github.com/orgs/curl/people). Be aware that
|
||||
the level of presence and activity in the project vary greatly between
|
||||
different individuals and over time.
|
||||
|
||||
### Become a maintainer?
|
||||
|
||||
If you think you can help making the project better by shouldering some
|
||||
maintaining responsibilities, then please get in touch.
|
||||
|
||||
You will be expected to be familiar with the curl project and its ways of
|
||||
working. You need to have gotten a few quality patches merged as a proof of
|
||||
this.
|
||||
|
||||
### Stop being a maintainer
|
||||
|
||||
If you (appear to) not be active in the project anymore, you may be removed as
|
||||
a maintainer. Thank you for your service!
|
70
curl/docs/HELP-US.md
Normal file
70
curl/docs/HELP-US.md
Normal file
@ -0,0 +1,70 @@
|
||||
# How to get started helping out in the curl project
|
||||
|
||||
We are always in need of more help. If you are new to the project and are
|
||||
looking for ways to contribute and help out, this document aims to give a few
|
||||
good starting points.
|
||||
|
||||
A good idea is to start by subscribing to the [curl-library mailing
|
||||
list](https://cool.haxx.se/mailman/listinfo/curl-library) to keep track of the
|
||||
current discussion topics.
|
||||
|
||||
## Scratch your own itch
|
||||
|
||||
One of the best ways is to start working on any problems or issues you have
|
||||
found yourself or perhaps got annoyed at in the past. It can be a spelling
|
||||
error in an error text or a weirdly phrased section in a man page. Hunt it
|
||||
down and report the bug. Or make your first pull request with a fix for that.
|
||||
|
||||
## Help wanted
|
||||
|
||||
In the issue tracker we occasionally mark bugs with [help
|
||||
wanted](https://github.com/curl/curl/labels/help%20wanted), as a sign that the
|
||||
bug is acknowledged to exist and that there's nobody known to work on this
|
||||
issue for the moment. Those are bugs that are fine to "grab" and provide a
|
||||
pull request for. The complexity level of these will of course vary, so pick
|
||||
one that piques your interest.
|
||||
|
||||
## Work on known bugs
|
||||
|
||||
Some bugs are known and haven't yet received attention and work enough to get
|
||||
fixed. We collect such known existing flaws in the
|
||||
[KNOWN_BUGS](https://curl.haxx.se/docs/knownbugs.html) page. Many of them link
|
||||
to the original bug report with some additional details, but some may also
|
||||
have aged a bit and may require some verification that the bug still exists in
|
||||
the same way and that what was said about it in the past is still valid.
|
||||
|
||||
## Fix autobuild problems
|
||||
|
||||
On the [autobuilds page](https://curl.haxx.se/dev/builds.html) we show a
|
||||
collection of test results from the automatic curl build and tests that are
|
||||
performed by volunteers. Fixing compiler warnings and errors shown there is
|
||||
something we value greatly. Also, if you own or run systems or architectures
|
||||
that aren't already tested in the autobuilds, we also appreciate more
|
||||
volunteers running builds automatically to help us keep curl portable.
|
||||
|
||||
## TODO items
|
||||
|
||||
Ideas for features and functions that we have considered worthwhile to
|
||||
implement and provide are kept in the
|
||||
[TODO](https://curl.haxx.se/docs/todo.html) file. Some of the ideas are
|
||||
rough. Some are well thought out. Some probably aren't really suitable
|
||||
anymore.
|
||||
|
||||
Before you invest a lot of time on a TODO item, do bring it up for discussion
|
||||
on the mailing list. For discussion on applicability but also for ideas and
|
||||
brainstorming on specific ways to do the implementation etc.
|
||||
|
||||
## You decide
|
||||
|
||||
You can also come up with a completely new thing you think we should do. Or
|
||||
not do. Or fix. Or add to the project. You then either bring it to the mailing
|
||||
list first to see if people will shoot down the idea at once, or you bring a
|
||||
first draft of the idea as a pull request and take the discussion there around
|
||||
the specific implementation. Either way is fine.
|
||||
|
||||
## CONTRIBUTE
|
||||
|
||||
We offer [guidelines](https://curl.haxx.se/dev/contribute.html) that are
|
||||
suitable to be familiar with before you decide to contribute to curl. If
|
||||
you're used to open source development, you'll probably not find many
|
||||
surprises in there.
|
@ -1,20 +1,14 @@
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
How cURL Became Like This
|
||||
How curl Became Like This
|
||||
=========================
|
||||
|
||||
Towards the end of 1996, Daniel Stenberg was spending time writing an IRC bot
|
||||
for an Amiga related channel on EFnet. He then came up with the idea to make
|
||||
currency-exchange calculations available to Internet Relay Chat (IRC)
|
||||
users. All the necessary data are published on the Web; he just needed to
|
||||
users. All the necessary data were published on the Web; he just needed to
|
||||
automate their retrieval.
|
||||
|
||||
Daniel simply adopted an existing command-line open-source tool, httpget, that
|
||||
Brazilian Rafael Sagula had written and recently release version 0.1 of. After
|
||||
Brazilian Rafael Sagula had written and recently released version 0.1 of. After
|
||||
a few minor adjustments, it did just what he needed.
|
||||
|
||||
1997
|
||||
@ -41,14 +35,14 @@ was revealed to us much later.)
|
||||
|
||||
SSL support was added, powered by the SSLeay library.
|
||||
|
||||
August, first announcement of curl on freshmeat.net.
|
||||
August: first announcement of curl on freshmeat.net.
|
||||
|
||||
October, with the curl 4.9 release and the introduction of cookie support,
|
||||
October: with the curl 4.9 release and the introduction of cookie support,
|
||||
curl was no longer released under the GPL license. Now we're at 4000 lines of
|
||||
code, we switched over to the MPL license to restrict the effects of
|
||||
"copyleft".
|
||||
|
||||
November, configure script and reported successful compiles on several
|
||||
November: configure script and reported successful compiles on several
|
||||
major operating systems. The never-quite-understood -F option was added and
|
||||
curl could now simulate quite a lot of a browser. TELNET support was added.
|
||||
|
||||
@ -58,29 +52,31 @@ page. People started making Linux RPM packages out of it.
|
||||
1999
|
||||
----
|
||||
|
||||
January, DICT support added.
|
||||
January: DICT support added.
|
||||
|
||||
OpenSSL took over where SSLeay was abandoned.
|
||||
OpenSSL took over and SSLeay was abandoned.
|
||||
|
||||
May, first Debian package.
|
||||
May: first Debian package.
|
||||
|
||||
August, LDAP:// and FILE:// support added. The curl web site gets 1300 visits
|
||||
weekly.
|
||||
August: LDAP:// and FILE:// support added. The curl web site gets 1300 visits
|
||||
weekly. Moved site to curl.haxx.nu.
|
||||
|
||||
Released curl 6.0 in September. 15000 lines of code.
|
||||
September: Released curl 6.0. 15000 lines of code.
|
||||
|
||||
December 28, added the project on Sourceforge and started using its services
|
||||
December 28: added the project on Sourceforge and started using its services
|
||||
for managing the project.
|
||||
|
||||
2000
|
||||
----
|
||||
|
||||
Spring 2000, major internal overhaul to provide a suitable library interface.
|
||||
Spring: major internal overhaul to provide a suitable library interface.
|
||||
The first non-beta release was named 7.1 and arrived in August. This offered
|
||||
the easy interface and turned out to be the beginning of actually getting
|
||||
other software and programs to get based on and powered by libcurl. Almost
|
||||
other software and programs to be based on and powered by libcurl. Almost
|
||||
20000 lines of code.
|
||||
|
||||
June: the curl site moves to "curl.haxx.se"
|
||||
|
||||
August, the curl web site gets 4000 visits weekly.
|
||||
|
||||
The PHP guys adopted libcurl already the same month, when the first ever third
|
||||
@ -88,41 +84,40 @@ party libcurl binding showed up. CURL has been a supported module in PHP since
|
||||
the release of PHP 4.0.2. This would soon get followers. More than 16
|
||||
different bindings exist at the time of this writing.
|
||||
|
||||
September, kerberos4 support was added.
|
||||
September: kerberos4 support was added.
|
||||
|
||||
In November started the work on a test suite for curl. It was later re-written
|
||||
November: started the work on a test suite for curl. It was later re-written
|
||||
from scratch again. The libcurl major SONAME number was set to 1.
|
||||
|
||||
2001
|
||||
----
|
||||
|
||||
January, Daniel released curl 7.5.2 under a new license again: MIT (or
|
||||
MPL). The MIT license is extremely liberal and can be used combined with GPL
|
||||
January: Daniel released curl 7.5.2 under a new license again: MIT (or
|
||||
MPL). The MIT license is extremely liberal and can be combined with GPL
|
||||
in other projects. This would finally put an end to the "complaints" from
|
||||
people involved in GPLed projects that previously were prohibited from using
|
||||
libcurl while it was released under MPL only. (Due to the fact that MPL is
|
||||
deemed "GPL incompatible".)
|
||||
|
||||
curl supports HTTP 1.1 starting with the release of 7.7, March 22 2001. This
|
||||
March 22: curl supports HTTP 1.1 starting with the release of 7.7. This
|
||||
also introduced libcurl's ability to do persistent connections. 24000 lines of
|
||||
code. The libcurl major SONAME number was bumped to 2 due to this overhaul.
|
||||
The first experimental ftps:// support was added.
|
||||
|
||||
The first experimental ftps:// support was added in March 2001.
|
||||
|
||||
August. curl is bundled in Mac OS X, 10.1. It was already becoming more and
|
||||
August: curl is bundled in Mac OS X, 10.1. It was already becoming more and
|
||||
more of a standard utility of Linux distributions and a regular in the BSD
|
||||
ports collections. The curl web site gets 8000 visits weekly. Curl Corporation
|
||||
contacted Daniel to discuss "the name issue". After Daniel's reply, they have
|
||||
never since got in touch again.
|
||||
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 much whistles.
|
||||
without many whistles.
|
||||
|
||||
2002
|
||||
----
|
||||
|
||||
June, the curl web site gets 13000 visits weekly. curl and libcurl is
|
||||
June: the curl web site gets 13000 visits weekly. curl and libcurl is
|
||||
35000 lines of code. Reported successful compiles on more than 40 combinations
|
||||
of CPUs and operating systems.
|
||||
|
||||
@ -131,15 +126,15 @@ 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.
|
||||
|
||||
September, with the release of curl 7.10 it is released under the MIT license
|
||||
September: with the release of curl 7.10 it is released under the MIT license
|
||||
only.
|
||||
|
||||
2003
|
||||
----
|
||||
|
||||
January. Started working on the distributed curl tests. The autobuilds.
|
||||
January: Started working on the distributed curl tests. The autobuilds.
|
||||
|
||||
February, the curl site averages at 20000 visits weekly. At any given moment,
|
||||
February: the curl site averages at 20000 visits weekly. At any given moment,
|
||||
there's an average of 3 people browsing the curl.haxx.se site.
|
||||
|
||||
Multiple new authentication schemes are supported: Digest (May), NTLM (June)
|
||||
@ -148,7 +143,7 @@ and Negotiate (June).
|
||||
November: curl 7.10.8 is released. 45000 lines of code. ~55000 unique visitors
|
||||
to the curl.haxx.se site. Five official web mirrors.
|
||||
|
||||
December, full-fledged SSL for FTP is supported.
|
||||
December: full-fledged SSL for FTP is supported.
|
||||
|
||||
2004
|
||||
----
|
||||
@ -162,20 +157,22 @@ curl_formparse() function
|
||||
|
||||
August: Curl and libcurl 7.12.1
|
||||
|
||||
Public curl release number: 82
|
||||
Public curl release number: 82
|
||||
Releases counted from the very beginning: 109
|
||||
Available command line options: 96
|
||||
Available command line options: 96
|
||||
Available curl_easy_setopt() options: 120
|
||||
Number of public functions in libcurl: 36
|
||||
Amount of public web site mirrors: 12
|
||||
Number of known libcurl bindings: 26
|
||||
Number of public functions in libcurl: 36
|
||||
Amount of public web site mirrors: 12
|
||||
Number of known libcurl bindings: 26
|
||||
|
||||
2005
|
||||
----
|
||||
|
||||
April. GnuTLS can now optionally be used for the secure layer when curl is
|
||||
April: GnuTLS can now optionally be used for the secure layer when curl is
|
||||
built.
|
||||
|
||||
April: Added the multi_socket() API
|
||||
|
||||
September: TFTP support was added.
|
||||
|
||||
More than 100,000 unique visitors of the curl web site. 25 mirrors.
|
||||
@ -185,14 +182,12 @@ December: security vulnerability: libcurl URL Buffer Overflow
|
||||
2006
|
||||
----
|
||||
|
||||
January. We dropped support for Gopher. We found bugs in the implementation
|
||||
that turned out having been introduced years ago, so with the conclusion that
|
||||
January: We dropped support for Gopher. We found bugs in the implementation
|
||||
that turned out to have been introduced years ago, so with the conclusion that
|
||||
nobody had found out in all this time we removed it instead of fixing it.
|
||||
|
||||
March: security vulnerability: libcurl TFTP Packet Buffer Overflow
|
||||
|
||||
April: Added the multi_socket() API
|
||||
|
||||
September: The major SONAME number for libcurl was bumped to 4 due to the
|
||||
removal of ftp third party transfer support.
|
||||
|
||||
@ -212,8 +207,8 @@ November:
|
||||
|
||||
Command line options: 128
|
||||
curl_easy_setopt() options: 158
|
||||
Public functions in libcurl: 58
|
||||
Known libcurl bindings: 37
|
||||
Public functions in libcurl: 58
|
||||
Known libcurl bindings: 37
|
||||
Contributors: 683
|
||||
|
||||
145,000 unique visitors. >100 GB downloaded.
|
||||
@ -246,11 +241,18 @@ August:
|
||||
Public curl releases: 117
|
||||
Command line options: 138
|
||||
curl_easy_setopt() options: 180
|
||||
Public functions in libcurl: 58
|
||||
Known libcurl bindings: 39
|
||||
Public functions in libcurl: 58
|
||||
Known libcurl bindings: 39
|
||||
Contributors: 808
|
||||
|
||||
Gopher support added (re-added actually)
|
||||
Gopher support added (re-added actually, see January 2006)
|
||||
|
||||
2011
|
||||
----
|
||||
|
||||
February: added support for the axTLS backend
|
||||
|
||||
April: added the cyassl backend (later renamed to WolfSSL)
|
||||
|
||||
2012
|
||||
----
|
||||
@ -280,3 +282,65 @@ August:
|
||||
March: first real release supporting HTTP/2
|
||||
|
||||
September: Web site had 245,000 unique visitors and served 236GB data
|
||||
|
||||
2015
|
||||
----
|
||||
|
||||
June: support for multiplexing with HTTP/2
|
||||
|
||||
August: support for HTTP/2 server push
|
||||
|
||||
December: Public Suffix List
|
||||
|
||||
2016
|
||||
----
|
||||
|
||||
January: the curl tool defaults to HTTP/2 for HTTPS URLs
|
||||
|
||||
December: curl 7.52.0 introduced support for HTTPS-proxy!
|
||||
|
||||
First TLS 1.3 support
|
||||
|
||||
2017
|
||||
----
|
||||
|
||||
September: Added Multi-SSL support
|
||||
|
||||
The web site serves 3100 GB/month
|
||||
|
||||
Public curl releases: 169
|
||||
Command line options: 211
|
||||
curl_easy_setopt() options: 249
|
||||
Public functions in libcurl: 74
|
||||
Contributors: 1609
|
||||
|
||||
October: SSLKEYLOGFILE support, new MIME API
|
||||
|
||||
November: brotli
|
||||
|
||||
2018
|
||||
----
|
||||
|
||||
January: new SSH backend powered by libssh
|
||||
|
||||
March: starting with the 1803 release of Windows 10, curl is shipped bundled
|
||||
with Microsoft's operating system.
|
||||
|
||||
July: curl shows headers using bold type face
|
||||
|
||||
October: added DNS-over-HTTPS (DoH) and the URL API
|
||||
|
||||
MesaLink is a new supported TLS backend
|
||||
|
||||
libcurl now does HTTP/2 (and multiplexing) by default on HTTPS URLs
|
||||
|
||||
curl and libcurl are installed in an estimated 5 *billion* instances
|
||||
world-wide.
|
||||
|
||||
October 31: Curl and libcurl 7.62.0
|
||||
|
||||
Public curl releases: 177
|
||||
Command line options: 219
|
||||
curl_easy_setopt() options: 261
|
||||
Public functions in libcurl: 80
|
||||
Contributors: 1808
|
@ -1,123 +0,0 @@
|
||||
Updated: July 3, 2012 (http://curl.haxx.se/docs/http-cookies.html)
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
|
||||
HTTP Cookies
|
||||
|
||||
1. HTTP Cookies
|
||||
1.1 Cookie overview
|
||||
1.2 Cookies saved to disk
|
||||
1.3 Cookies with curl the command line tool
|
||||
1.4 Cookies with libcurl
|
||||
1.5 Cookies with javascript
|
||||
|
||||
==============================================================================
|
||||
|
||||
1. HTTP Cookies
|
||||
|
||||
1.1 Cookie overview
|
||||
|
||||
HTTP cookies are pieces of 'name=contents' snippets that a server tells the
|
||||
client to hold and then the client sends back those the server on subsequent
|
||||
requests to the same domains/paths for which the cookies were set.
|
||||
|
||||
Cookies are either "session cookies" which typically are forgotten when the
|
||||
session is over which is often translated to equal when browser quits, or
|
||||
the cookies aren't session cookies they have expiration dates after which
|
||||
the client will throw them away.
|
||||
|
||||
Cookies are set to the client with the Set-Cookie: header and are sent to
|
||||
servers with the Cookie: header.
|
||||
|
||||
For a very long time, the only spec explaining how to use cookies was the
|
||||
original Netscape spec from 1994: http://curl.haxx.se/rfc/cookie_spec.html
|
||||
|
||||
In 2011, RFC6265 (https://www.ietf.org/rfc/rfc6265.txt) was finally published
|
||||
and details how cookies work within HTTP.
|
||||
|
||||
1.2 Cookies saved to disk
|
||||
|
||||
Netscape once created a file format for storing cookies on disk so that they
|
||||
would survive browser restarts. curl adopted that file format to allow
|
||||
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
|
||||
file with a bunch of associated meta data, each field separated with
|
||||
TAB. That file is called the cookiejar 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.
|
||||
|
||||
1.3 Cookies with curl the command line tool
|
||||
|
||||
curl has a full cookie "engine" built in. If you just activate it, you can
|
||||
have curl receive and send cookies exactly as mandated in the specs.
|
||||
|
||||
Command line options:
|
||||
|
||||
-b, --cookie
|
||||
|
||||
tell curl a file to read cookies from and start the cookie engine, or if
|
||||
it isn't a file it will pass on the given string. -b name=var works and so
|
||||
does -b cookiefile.
|
||||
|
||||
-j, --junk-session-cookies
|
||||
|
||||
when used in combination with -b, it will skip all "session cookies" on
|
||||
load so as to appear to start a new cookie session.
|
||||
|
||||
-c, --cookie-jar
|
||||
|
||||
tell curl to start the cookie engine and write cookies to the given file
|
||||
after the request(s)
|
||||
|
||||
1.4 Cookies with libcurl
|
||||
|
||||
libcurl offers several ways to enable and interface the cookie engine. These
|
||||
options are the ones provided by the native API. libcurl bindings may offer
|
||||
access to them using other means.
|
||||
|
||||
CURLOPT_COOKIE
|
||||
|
||||
Is used when you want to specify the exact contents of a cookie header to
|
||||
send to the server.
|
||||
|
||||
CURLOPT_COOKIEFILE
|
||||
|
||||
Tell libcurl to activate the cookie engine, and to read the initial set of
|
||||
cookies from the given file. Read-only.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
CURLINFO_COOKIELIST
|
||||
|
||||
Extract cookie information from the internal cookie storage as a linked
|
||||
list.
|
||||
|
||||
1.5 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
|
||||
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.
|
||||
|
||||
Often, if you want to mimic what a browser does on such web sites, you can
|
||||
record web browser HTTP traffic when using such a site and then repeat the
|
||||
cookie operations using curl or libcurl.
|
113
curl/docs/HTTP-COOKIES.md
Normal file
113
curl/docs/HTTP-COOKIES.md
Normal file
@ -0,0 +1,113 @@
|
||||
# HTTP Cookies
|
||||
|
||||
## Cookie overview
|
||||
|
||||
Cookies are `name=contents` pairs that a 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.
|
||||
|
||||
Cookies are either "session cookies" which typically are forgotten when the
|
||||
session is over which is often translated to equal when browser quits, or
|
||||
the cookies aren't session cookies they have expiration dates after which
|
||||
the client will throw them away.
|
||||
|
||||
Cookies are set to the client with the Set-Cookie: header and are sent to
|
||||
servers with the Cookie: header.
|
||||
|
||||
For a very long time, the only spec explaining how to use cookies was the
|
||||
original [Netscape spec from 1994](https://curl.haxx.se/rfc/cookie_spec.html).
|
||||
|
||||
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),
|
||||
and in 2017, another update was
|
||||
[drafted](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01)
|
||||
to deprecate modification of 'secure' cookies from non-secure origins. Both
|
||||
of these drafs have been incorporated into a proposal to
|
||||
[replace](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02)
|
||||
RFC6265. Cookie prefixes and secure cookie modification protection has been
|
||||
implemented by curl.
|
||||
|
||||
## Cookies saved to disk
|
||||
|
||||
Netscape once created a file format for storing cookies on disk so that they
|
||||
would survive browser restarts. curl adopted that file format to allow
|
||||
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
|
||||
file with a bunch of associated meta data, each field separated with
|
||||
TAB. That file is called the cookiejar 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.
|
||||
|
||||
## Cookies with curl the command line tool
|
||||
|
||||
curl has a full cookie "engine" built in. If you just activate it, you can
|
||||
have curl receive and send cookies exactly as mandated in the specs.
|
||||
|
||||
Command line options:
|
||||
|
||||
`-b, --cookie`
|
||||
|
||||
tell curl a file to read cookies from and start the cookie engine, or if it
|
||||
isn't a file it will pass on the given string. -b name=var works and so does
|
||||
-b cookiefile.
|
||||
|
||||
`-j, --junk-session-cookies`
|
||||
|
||||
when used in combination with -b, it will skip all "session cookies" on load
|
||||
so as to appear to start a new cookie session.
|
||||
|
||||
`-c, --cookie-jar`
|
||||
|
||||
tell curl to start the cookie engine and write cookies to the given file
|
||||
after the request(s)
|
||||
|
||||
## Cookies with libcurl
|
||||
|
||||
libcurl offers several ways to enable and interface the cookie engine. These
|
||||
options are the ones provided by the native API. libcurl bindings may offer
|
||||
access to them using other means.
|
||||
|
||||
`CURLOPT_COOKIE`
|
||||
|
||||
Is used when you want to specify the exact contents of a cookie header to
|
||||
send to the server.
|
||||
|
||||
`CURLOPT_COOKIEFILE`
|
||||
|
||||
Tell libcurl to activate the cookie engine, and to read the initial set of
|
||||
cookies from the given file. Read-only.
|
||||
|
||||
`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.
|
||||
|
||||
`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.
|
||||
|
||||
`CURLINFO_COOKIELIST`
|
||||
|
||||
Extract cookie information from the internal cookie storage as a linked
|
||||
list.
|
||||
|
||||
## 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
|
||||
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.
|
||||
|
||||
Often, if you want to mimic what a browser does on such web sites, you can
|
||||
record web browser HTTP traffic when using such a site and then repeat the
|
||||
cookie operations using curl or libcurl.
|
@ -2,12 +2,13 @@ HTTP/2 with curl
|
||||
================
|
||||
|
||||
[HTTP/2 Spec](https://www.rfc-editor.org/rfc/rfc7540.txt)
|
||||
[http2 explained](http://daniel.haxx.se/http2/)
|
||||
[http2 explained](https://daniel.haxx.se/http2/)
|
||||
|
||||
Build prerequisites
|
||||
-------------------
|
||||
- nghttp2
|
||||
- OpenSSL, NSS, GnutTLS or PolarSSL with a new enough version
|
||||
- OpenSSL, libressl, BoringSSL, NSS, GnutTLS, mbedTLS, wolfSSL or Schannel
|
||||
with a new enough version.
|
||||
|
||||
[nghttp2](https://nghttp2.org/)
|
||||
-------------------------------
|
||||
@ -36,23 +37,33 @@ 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.
|
||||
Consider options to explicitly disable ALPN and/or NPN.
|
||||
|
||||
`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.
|
||||
|
||||
`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:
|
||||
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
|
||||
- NSS: ALPN and NPN
|
||||
- GnuTLS: ALPN
|
||||
- PolarSSL: ALPN
|
||||
- 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
|
||||
|
||||
Multiplexing
|
||||
------------
|
||||
@ -84,24 +95,33 @@ in HTTP 1.1 style. This allows applications to work unmodified.
|
||||
curl tool
|
||||
---------
|
||||
|
||||
curl offers the `--http2` command line option to enable use of HTTP/2
|
||||
curl offers the `--http2` command line option to enable use of HTTP/2.
|
||||
|
||||
curl offers the `--http2-prior-knowledge` command line option to enable use of
|
||||
HTTP/2 without HTTP/1.1 Upgrade.
|
||||
|
||||
Since 7.47.0, the curl tool enables HTTP/2 by default for HTTPS connections.
|
||||
|
||||
curl tool limitations
|
||||
---------------------
|
||||
|
||||
The command line tool won't do any HTTP/2 multiplexing even though libcurl
|
||||
supports it, simply because the curl tool is not written to take advantage of
|
||||
the libcurl API that's necessary for this (the multi interface). We have an
|
||||
outstanding TODO item for this and **you** can help us make it happen.
|
||||
|
||||
The command line tool also doesn't support HTTP/2 server push for the same
|
||||
reason it doesn't do multiplexing: it needs to use the multi interface for
|
||||
that so that multiplexing is supported.
|
||||
|
||||
HTTP Alternative Services
|
||||
-------------------------
|
||||
|
||||
Alt-Svc is a suggested extension with a corresponding frame (ALTSVC) in HTTP/2
|
||||
that tells the client about an alternative "route" to the same content for the
|
||||
same origin server that you get the response from. A browser or long-living
|
||||
client can use that hint to create a new connection asynchronously. For
|
||||
libcurl, we may introduce a way to bring such clues to the applicaton and/or
|
||||
let a subsequent request use the alternate route
|
||||
automatically. [Spec](https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-05)
|
||||
|
||||
TODO
|
||||
----
|
||||
|
||||
- Provide API to set priorities / dependencies of individual streams
|
||||
|
||||
- Implement "prior-knowledge" HTTP/2 connecitons over clear text so that
|
||||
curl can connect with HTTP/2 at once without 1.1+Upgrade.
|
||||
Alt-Svc is an extension with a corresponding frame (ALTSVC) in HTTP/2 that
|
||||
tells the client about an alternative "route" to the same content for the same
|
||||
origin server that you get the response from. A browser or long-living client
|
||||
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)
|
||||
|
1096
curl/docs/INSTALL
1096
curl/docs/INSTALL
File diff suppressed because it is too large
Load Diff
90
curl/docs/INSTALL.cmake
Normal file
90
curl/docs/INSTALL.cmake
Normal file
@ -0,0 +1,90 @@
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
How To Compile with CMake
|
||||
|
||||
Building with CMake
|
||||
==========================
|
||||
This document describes how to compile, build and install curl and libcurl
|
||||
from source code using the CMake build tool. To build with CMake, you will
|
||||
of course have to first install CMake. The minimum required version of
|
||||
CMake is specified in the file CMakeLists.txt found in the top of the curl
|
||||
source tree. Once the correct version of CMake is installed you can follow
|
||||
the instructions below for the platform you are building on.
|
||||
|
||||
CMake builds can be configured either from the command line, or from one
|
||||
of CMake's GUI's.
|
||||
|
||||
Current flaws in the curl CMake build
|
||||
=====================================
|
||||
|
||||
Missing features in the cmake build:
|
||||
|
||||
- Builds libcurl without large file support
|
||||
- Does not support all SSL libraries (only OpenSSL, WinSSL, DarwinSSL, and
|
||||
mbed TLS)
|
||||
- Doesn't build with SCP and SFTP support (libssh2) (see issue #1155)
|
||||
- Doesn't allow different resolver backends (no c-ares build support)
|
||||
- No RTMP support built
|
||||
- Doesn't allow build curl and libcurl debug enabled
|
||||
- Doesn't allow a custom CA bundle path
|
||||
- Doesn't allow you to disable specific protocols from the build
|
||||
- Doesn't find or use krb4 or GSS
|
||||
- Rebuilds test files too eagerly, but still can't run the tests
|
||||
- Doesn't detect the correct strerror_r flavor when cross-compiling (issue #1123)
|
||||
|
||||
|
||||
Command Line CMake
|
||||
==================
|
||||
A CMake build of curl is similar to the autotools build of curl. It
|
||||
consists of the following steps after you have unpacked the source.
|
||||
|
||||
1. Create an out of source build tree parallel to the curl source
|
||||
tree and change into that directory
|
||||
|
||||
$ mkdir curl-build
|
||||
$ cd curl-build
|
||||
|
||||
2. Run CMake from the build tree, giving it the path to the top of
|
||||
the curl source tree. CMake will pick a compiler for you. If you
|
||||
want to specify the compile, you can set the CC environment
|
||||
variable prior to running CMake.
|
||||
|
||||
$ cmake ../curl
|
||||
$ make
|
||||
|
||||
3. Install to default location:
|
||||
|
||||
$ make install
|
||||
|
||||
(The test suite does not work with the cmake build)
|
||||
|
||||
ccmake
|
||||
=========
|
||||
CMake comes with a curses based interface called ccmake. To run ccmake on
|
||||
a curl use the instructions for the command line cmake, but substitute
|
||||
ccmake ../curl for cmake ../curl. This will bring up a curses interface
|
||||
with instructions on the bottom of the screen. You can press the "c" key
|
||||
to configure the project, and the "g" key to generate the project. After
|
||||
the project is generated, you can run make.
|
||||
|
||||
cmake-gui
|
||||
=========
|
||||
CMake also comes with a Qt based GUI called cmake-gui. To configure with
|
||||
cmake-gui, you run cmake-gui and follow these steps:
|
||||
1. Fill in the "Where is the source code" combo box with the path to
|
||||
the curl source tree.
|
||||
2. Fill in the "Where to build the binaries" combo box with the path
|
||||
to the directory for your build tree, ideally this should not be the
|
||||
same as the source tree, but a parallel directory called curl-build or
|
||||
something similar.
|
||||
3. Once the source and binary directories are specified, press the
|
||||
"Configure" button.
|
||||
4. Select the native build tool that you want to use.
|
||||
5. At this point you can change any of the options presented in the
|
||||
GUI. Once you have selected all the options you want, click the
|
||||
"Generate" button.
|
||||
6. Run the native build tool that you used CMake to generate.
|
@ -1,302 +0,0 @@
|
||||
DevCpp-Mingw Install & Compilation Sept 2005
|
||||
==================================
|
||||
|
||||
Reference Emails available at curl@haxx.se:
|
||||
|
||||
Libcurl Install and Use Issues
|
||||
Awaiting an Answer for Win 32 Install
|
||||
res = curl_easy_perform(curl); Error
|
||||
Makefile Issues
|
||||
|
||||
|
||||
Having previously done a thorough review of what was available that met my
|
||||
requirements under GPL, I settled for Libcurl as the software of choice for
|
||||
many reasons not the least of which was the support.
|
||||
|
||||
Background
|
||||
----------
|
||||
|
||||
This quest started when I innocently tried to incorporate the libcurl library
|
||||
into my simple source code. I figured that a few easy steps would accomplish
|
||||
this without major headaches. I had no idea that I would be facing an almost
|
||||
insurmountable challenge.
|
||||
|
||||
The main problem lies in two areas. First the bulk of support for libcurl
|
||||
exists for a Unix/linux command line environments. This is of little help when
|
||||
it comes to Windows O/S.
|
||||
|
||||
Secondly the help that does exist for the Windows O/S focused around mingw
|
||||
through a command line argument environment.
|
||||
|
||||
You may ask "Why is this a problem?"
|
||||
|
||||
I'm using a Windows O/S with DevCpp. For those of you who are unfamiliar with
|
||||
DevCpp, it is a window shell GUI that replaces the command line environment
|
||||
for gcc. A definite improvement that I am unwilling to give up. However using
|
||||
DevCpp presented its own set of issues. Inadvertently I also made some
|
||||
careless errors such as compiling the 7.14 version of Makefile with an older
|
||||
version of source code. Thanks to Dan Fandrich for picking this up.
|
||||
|
||||
I did eventually with the help of Daniel, Phillipe and others manage to
|
||||
implement successfully (the only mingw available version)
|
||||
curl-7.13.0-win32-ssl-devel-mingw32 into the DevCpp environment. Only the
|
||||
dynamic libcurl.dll libcurldll.a libraries worked. The static library which I
|
||||
was interested in did not. Furthermore when I tried to implement one of the
|
||||
examples included with the curl package (get info.c) it caused the executable
|
||||
to crash. Tracing the bug I found it in the code and function res =
|
||||
curl_easy_perform(curl);.
|
||||
|
||||
At this point I had to make a choice as to whether invest my limited
|
||||
time-energy resource to fixing the bug or to compile the new version
|
||||
available. After searching the archives I found a very similar or the same bug
|
||||
reported from version 7.12x on. Daniel did inform me that he thought that this
|
||||
bug had been fixed with the latest version. So I proceeded to compile the
|
||||
latest SSL version where I faced other challenges.
|
||||
|
||||
In order to make this process unremarkable for others using the same
|
||||
environment I decided to document the process so that others will find it
|
||||
routine. It would be a shame if newbies could not implement this excellent
|
||||
package for their use.
|
||||
|
||||
I would like to thank the many others in this forum and in the DevCpp forum
|
||||
for their help. Without your help I may either have given up or it would have
|
||||
taken me many times longer to achieve success.
|
||||
|
||||
The Cookbook Approach
|
||||
---------------------
|
||||
|
||||
This discussion will be confined to a SSL static library compilation and
|
||||
installation. Limited mention and comments will be inserted where appropriate
|
||||
to help with non-SSL, dynamic libraries and executables.
|
||||
|
||||
|
||||
Using Makefile from DevCpp to compile Libcurl libraries
|
||||
|
||||
Preamble
|
||||
--------
|
||||
|
||||
Using the latest version release - curl-7.14.0.tar.gz. Curl source code is
|
||||
platform independent. This simply means that the source code can be compiled
|
||||
for any Operating System (Linux/Unix Windows etc. and variations of thereof).
|
||||
|
||||
The first thing to note is that inside curl-7.14.0 you will find two folders
|
||||
lib and src. Both contain Makefile.m32 (required for win mingw library or exe
|
||||
compilation) files which are different. The main difference between these two
|
||||
folders and the makefiles is that the src folder contents are used to compile
|
||||
an executable file(curl.exe) while the lib folder contents are used to compile
|
||||
a static (libcurl.a) and dynamic (libcurl.dll & libcurldll.a) file that can be
|
||||
used to compile libcurl with your own source code so that one can use and
|
||||
access all libcurl functions.
|
||||
|
||||
Before we start please make sure that DevCpp is installed properly. In
|
||||
particular make sure you have no spaces in the name of any of the directories
|
||||
and subdirectories where DevCpp is installed. Failure to comply with the
|
||||
install instructions may produce erratic behaviour in DevCpp. For further info
|
||||
check the following sites
|
||||
|
||||
http://aditsu.freeunixhost.com/dev-cpp-faq.html
|
||||
https://sourceforge.net/p/dev-cpp/discussion/48211/thread/2a85ea46
|
||||
|
||||
As I have mentioned before I will confine this to the SSL Library compilations
|
||||
but the process is very similar for compilation of the executable - curl.exe;
|
||||
just substitute the src folder makefile in its stead.
|
||||
|
||||
First use a text processor Notepad, or your own favourite text processor. To
|
||||
engage your favourite text processor, select Makefile.m32 click once with your
|
||||
mouse on file icon; icon turns blue, press the shift key and right-click on
|
||||
mouse, menu appears select "Open with", select your favourite text processor.
|
||||
|
||||
Next read the contents of Makefile.m32. It includes instructions on its use.
|
||||
|
||||
Method I - DOS Command Line
|
||||
---------------------------
|
||||
|
||||
Note - The only reason I have included this method is that Method II which is
|
||||
the preferred method for compiling does not allow for the setting of option
|
||||
switches (e.g. SSL = 1 or SSL =0). At least that's what they tell me at the
|
||||
Dev-Cpp forum.
|
||||
|
||||
1 - Make a copy of (D:\Dev-Cpp\bin) bin folder and name it "bin Original"
|
||||
place it in the Dev-Cpp installed directory (D:\Dev-Cpp\ for this example)
|
||||
|
||||
2 - Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
|
||||
version into the bin folder above (D:\Dev-Cpp\bin). The reason being is that
|
||||
the make.exe file resides in this folder. Make.exe will use - Makefile.m32,
|
||||
Makefile.inc, and the source code included in the lib folder to compile the
|
||||
source code. There is a PATH issue with make.exe that remains unresolved at
|
||||
least for me. Unless the entire source code to be compiled is placed entirely
|
||||
within the directory of make.exe an error message will be generated - "file
|
||||
xxxx.yyy not available".
|
||||
|
||||
3- Go to Dev-Cpp\bin and double click on make .exe. You will see a DOS window
|
||||
quickly pop up and close very quickly. Not to worry! Please do not skip this
|
||||
step.
|
||||
|
||||
4- Click on the start button\Programs\MS-DOS Prompt.Once the DOS Window is up
|
||||
Type the disk drive letter (e.g. E: ) engage the enter button. The path should
|
||||
automatically take you to the directory of the make.exe file.
|
||||
|
||||
5- To compile the source code simply type at the DOS prompt make -f
|
||||
Makefile.m32 as per instructions contained in the Makefile.m32 file (use any
|
||||
text processor to read instructions). I don't believe that this makefile
|
||||
allows for the option of non SSL. Ignore any warnings.
|
||||
|
||||
6- Collect and make copies of libcurl.a, libcurl.dll, libcurldll.a and any *.o
|
||||
compilations you might need in another directory outside of the bin directory
|
||||
as you will need this files shortly to set up libcurl for use with
|
||||
Dev-cpp. For most apps *.o is not required. Later on we will show what to do
|
||||
with these files.
|
||||
|
||||
7- You are finished but before closing we need to do cleanup - erase the bin
|
||||
folder and rename the "bin Original" folder created in step 1 to bin.
|
||||
|
||||
Note to compile a curl executable the process is probably similar but instead
|
||||
of using the LIB folder contents use the SRC folder contents and Makefiles in
|
||||
curl-7.14.0.tar.gz. File directories relative placements must be respected for
|
||||
compiling to take place successfully. This may not be possible with the PATH
|
||||
problem that make.exe experiences. If anyone has solved this PATH issue and
|
||||
please make sure it actually works on Win 9x/2000/XP before letting me
|
||||
know. Then please let me or Daniel in on the solution so that it can be
|
||||
included with these instructions. Thanks.
|
||||
|
||||
or
|
||||
|
||||
Method II - Dev-Cpp GUI
|
||||
-----------------------
|
||||
|
||||
1- Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
|
||||
version into any folder outside of (Dev-Cpp\bin).
|
||||
|
||||
2- Drop the File/New/click on Project.
|
||||
|
||||
3- New Project Dialogue box appears. Double click on the Static Library.
|
||||
|
||||
4- Create Project Dialogue box appears. Select the LIB folder location to
|
||||
place and locate your Project File Name. Placing the Project File Name
|
||||
elsewhere may cause problems (PATH issue problem again).
|
||||
|
||||
5- Drop down the Project/Project Options. Project Options Dialogue box
|
||||
appears.
|
||||
|
||||
6- Select the Makefile tab in the Project Options Dialogue Box. Check Box -
|
||||
Use Custom Makefile. Click on the Folder icon at the extreme right of the
|
||||
Check Box. Select Makefile.m32 in the folder wherever you have placed the
|
||||
contents of the LIB Folder. Press OK and close the Dialogue Box.
|
||||
|
||||
7- Drop the Menu Project/Click on Add to Project. Open File Dialogue Box
|
||||
appears. The Dialogue Box should open in the folder wherever you have placed
|
||||
the contents of the LIB Folder. If not go there.
|
||||
|
||||
8- Select Crtl-A to select all files in the LIB folder. Click on open to add
|
||||
files and close box. Wait till all files are added. This may take 30 seconds
|
||||
or longer.
|
||||
|
||||
9- Drop the Menu Execute/Click on Compile.
|
||||
|
||||
10- That's it.
|
||||
|
||||
|
||||
The following steps must be completed if Curl is to work properly
|
||||
=================================================================
|
||||
|
||||
LIB folder inclusions (*.a placement)
|
||||
-------------------------------------
|
||||
|
||||
1- Refer to Method I - DOS Command Line point # 6 Take libcurl.a, libcurldll.a
|
||||
and install it in the directory C( or whichever drive Dev is installed)
|
||||
:\Dev-Cpp\lib.
|
||||
|
||||
|
||||
Include Folder
|
||||
--------------
|
||||
|
||||
1- Create a new folder by the name of curl (do not change the name curl to
|
||||
some other name as it will cause major issues) in the directory
|
||||
C:\Dev-Cpp\include.
|
||||
|
||||
2- Copy the entire contents of the curl folder of curl-7.14.0.tar.gz or zip
|
||||
version into the newly created curl directory - C:\Dev-Cpp\include\curl.
|
||||
|
||||
Links To Include And Lib Folder
|
||||
-------------------------------
|
||||
|
||||
1- Drop the Menu - Tools\Compiler Options\Directories\Libraries. Make sure
|
||||
that C( or whichever drive Dev is installed):\DEV-CPP\lib is included.
|
||||
|
||||
2- Next select the Menu - Tools\Compiler Options\Directories\C Includes. Make
|
||||
sure that C:\DEV-CPP\include and C:\Dev-Cpp\include\curl are included.
|
||||
|
||||
3- Next select the Menu - Tools\Compiler Options\Directories\C++
|
||||
Includes. Make sure that C:\DEV-CPP\include and C:\Dev-Cpp\include\curl are
|
||||
included.
|
||||
|
||||
Linker Links
|
||||
------------
|
||||
|
||||
1- Drop the Menu - Tools\Compiler Options\Directories\Compiler.
|
||||
|
||||
2- Make sure that the box "Add these commands to the linker command line" is
|
||||
checked.
|
||||
|
||||
3- Include in the white space immediately below the box referred in 2 -lcurl
|
||||
-lws2_32.
|
||||
|
||||
SSL Files
|
||||
---------
|
||||
|
||||
1- Get the latest openSSL (as of time of this writing)
|
||||
openssl-0.9.7e-win32-bin.zip for the minimalist package of the openssl-0.9.7e
|
||||
binaries ported to MS Windows 95/98/NT/XP using the MingW32/GCC-3.1
|
||||
development environment. The file may be downloaded at
|
||||
http://curl.haxx.se/download/.
|
||||
|
||||
2- Open the above zip file. You will find two files - SDL.dll,
|
||||
SDL_mixer.dll. Install them in the directory C:\WINDOWS\SYSTEM32 for Win 9x
|
||||
users and c:\winnt\system32 for NT-family users.
|
||||
|
||||
Multithreading Files
|
||||
--------------------
|
||||
|
||||
To be completed
|
||||
|
||||
#define
|
||||
-------
|
||||
|
||||
1- Make sure that your program includes the following - #define CURL_STATICLIB
|
||||
must be declared FIRST before any other define functions may be
|
||||
added. Otherwise you may experience link errors.
|
||||
|
||||
2- Don't forget to include #include "curl/curl.h".
|
||||
|
||||
e.g.
|
||||
#define CURL_STATICLIB
|
||||
#include <windows.h>
|
||||
#include "curl/curl.h"
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
etc...
|
||||
|
||||
|
||||
Static or Dynamic Library
|
||||
-------------------------
|
||||
|
||||
The above steps apply for the use by a static library. Should you choose to
|
||||
use a dynamic library you will be required to perform these additional steps.
|
||||
|
||||
1- Refer to Method I - DOS Command Line point # 6. Install libcurl.dll in the
|
||||
directory C:\WINDOWS\SYSTEM32 for Win 9x users and c:\winnt\system32 for
|
||||
NT-family users.
|
||||
|
||||
2- Refer to Linker Links point 3 - Replace -lcurl with -lcurldll.
|
||||
|
||||
Voila you're done.
|
||||
|
||||
The non-SSL static Library build may not be possible to use at least as of the
|
||||
time of this writing - v7.14. Check reference emails - Phillipe and I found it
|
||||
impossible to fully compile as certain files were missing for linking. No big
|
||||
loss as SSL is a major plus.
|
||||
|
||||
Hope this Helps
|
||||
|
||||
Tom
|
468
curl/docs/INSTALL.md
Normal file
468
curl/docs/INSTALL.md
Normal file
@ -0,0 +1,468 @@
|
||||
# how to install curl and libcurl
|
||||
|
||||
## Installing Binary Packages
|
||||
|
||||
Lots of people download binary distributions of curl and libcurl. This
|
||||
document does not describe how to install curl or libcurl using such a binary
|
||||
package. This document describes how to compile, build and install curl and
|
||||
libcurl from source code.
|
||||
|
||||
## Building from git
|
||||
|
||||
If you get your code off a git repository instead of a release tarball, see
|
||||
the `GIT-INFO` file in the root directory for specific instructions on how to
|
||||
proceed.
|
||||
|
||||
# Unix
|
||||
|
||||
A normal Unix installation is made in three or four steps (after you've
|
||||
unpacked the source archive):
|
||||
|
||||
./configure
|
||||
make
|
||||
make test (optional)
|
||||
make install
|
||||
|
||||
You probably need to be root when doing the last command.
|
||||
|
||||
Get a full listing of all available configure options by invoking it like:
|
||||
|
||||
./configure --help
|
||||
|
||||
If you want to install curl in a different file hierarchy than `/usr/local`,
|
||||
specify that when running configure:
|
||||
|
||||
./configure --prefix=/path/to/curl/tree
|
||||
|
||||
If you have write permission in that directory, you can do 'make install'
|
||||
without being root. An example of this would be to make a local install in
|
||||
your own home directory:
|
||||
|
||||
./configure --prefix=$HOME
|
||||
make
|
||||
make install
|
||||
|
||||
The configure script always tries to find a working SSL library unless
|
||||
explicitly told not to. If you have OpenSSL installed in the default search
|
||||
path for your compiler/linker, you don't need to do anything special. If you
|
||||
have OpenSSL installed in `/usr/local/ssl`, you can run configure like:
|
||||
|
||||
./configure --with-ssl
|
||||
|
||||
If you have OpenSSL installed somewhere else (for example, `/opt/OpenSSL`) and
|
||||
you have pkg-config installed, set the pkg-config path first, like this:
|
||||
|
||||
env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-ssl
|
||||
|
||||
Without pkg-config installed, use this:
|
||||
|
||||
./configure --with-ssl=/opt/OpenSSL
|
||||
|
||||
If you insist on forcing a build without SSL support, even though you may
|
||||
have OpenSSL installed in your system, you can run configure like this:
|
||||
|
||||
./configure --without-ssl
|
||||
|
||||
If you have OpenSSL installed, but with the libraries in one place and the
|
||||
header files somewhere else, you have to set the LDFLAGS and CPPFLAGS
|
||||
environment variables prior to running configure. Something like this should
|
||||
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
|
||||
linker doesn't 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:
|
||||
|
||||
LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure --with-ssl
|
||||
|
||||
## More Options
|
||||
|
||||
To force a static library compile, disable the shared library creation by
|
||||
running configure like:
|
||||
|
||||
./configure --disable-shared
|
||||
|
||||
To tell the configure script to skip searching for thread-safe functions, add
|
||||
an option like:
|
||||
|
||||
./configure --disable-thread
|
||||
|
||||
If you're a curl developer and use gcc, you might want to enable more debug
|
||||
options with the `--enable-debug` option.
|
||||
|
||||
curl can be built to use a whole range of libraries to provide various useful
|
||||
services, and configure will try to auto-detect a decent default. But if you
|
||||
want to alter it, you can select how to deal with each individual library.
|
||||
|
||||
## Select TLS backend
|
||||
|
||||
The default OpenSSL configure check will also detect and use BoringSSL or
|
||||
libressl.
|
||||
|
||||
- GnuTLS: `--without-ssl --with-gnutls`.
|
||||
- wolfSSL: `--without-ssl --with-wolfssl`
|
||||
- NSS: `--without-ssl --with-nss`
|
||||
- PolarSSL: `--without-ssl --with-polarssl`
|
||||
- mbedTLS: `--without-ssl --with-mbedtls`
|
||||
- schannel: `--without-ssl --with-schannel`
|
||||
- secure transport: `--without-ssl --with-secure-transport`
|
||||
- MesaLink: `--without-ssl --with-mesalink`
|
||||
|
||||
# Windows
|
||||
|
||||
## Building Windows DLLs and C run-time (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
|
||||
any cost.
|
||||
|
||||
Reading and comprehending Microsoft Knowledge Base articles KB94248 and
|
||||
KB140584 is a must for any Windows developer. Especially important is full
|
||||
understanding if you are not going to follow the advice given above.
|
||||
|
||||
- [How To Use the C Run-Time](https://support.microsoft.com/kb/94248/en-us)
|
||||
- [How to link with the correct C Run-Time CRT library](https://support.microsoft.com/kb/140584/en-us)
|
||||
- [Potential Errors Passing CRT Objects Across DLL Boundaries](https://msdn.microsoft.com/en-us/library/ms235460)
|
||||
|
||||
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 you get linkage errors read section 5.7 of the FAQ document.
|
||||
|
||||
## MingW32
|
||||
|
||||
Make sure that MinGW32's bin dir is in the search path, for example:
|
||||
|
||||
set PATH=c:\mingw32\bin;%PATH%
|
||||
|
||||
then run `mingw32-make mingw32` in the root dir. There are other
|
||||
make targets available to build libcurl with more features, use:
|
||||
|
||||
- `mingw32-make mingw32-zlib` to build with Zlib support;
|
||||
- `mingw32-make mingw32-ssl-zlib` to build with SSL and Zlib enabled;
|
||||
- `mingw32-make mingw32-ssh2-ssl-zlib` to build with SSH2, SSL, Zlib;
|
||||
- `mingw32-make mingw32-ssh2-ssl-sspi-zlib` to build with SSH2, SSL, Zlib
|
||||
and SSPI support.
|
||||
|
||||
If you have any problems linking libraries or finding header files, be sure
|
||||
to verify that the provided "Makefile.m32" files use the proper paths, and
|
||||
adjust as necessary. It is also possible to override these paths with
|
||||
environment variables, for example:
|
||||
|
||||
set ZLIB_PATH=c:\zlib-1.2.8
|
||||
set OPENSSL_PATH=c:\openssl-1.0.2c
|
||||
set LIBSSH2_PATH=c:\libssh2-1.6.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:
|
||||
|
||||
set LDAP_SDK=c:\openldap
|
||||
set USE_LDAP_OPENLDAP=1
|
||||
|
||||
or for using the Novell SDK:
|
||||
|
||||
set USE_LDAP_NOVELL=1
|
||||
|
||||
If you want to enable LDAPS support then set LDAPS=1.
|
||||
|
||||
## Cygwin
|
||||
|
||||
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'll see the configure fail toward the end.
|
||||
|
||||
Run `make`
|
||||
|
||||
## Disabling Specific Protocols in Windows builds
|
||||
|
||||
The configure utility, unfortunately, is not available for the Windows
|
||||
environment, therefore, you cannot use the various disable-protocol options of
|
||||
the configure utility on this platform.
|
||||
|
||||
However, you can use the following defines to disable specific
|
||||
protocols:
|
||||
|
||||
- `HTTP_ONLY` disables all protocols except HTTP
|
||||
- `CURL_DISABLE_FTP` disables FTP
|
||||
- `CURL_DISABLE_LDAP` disables LDAP
|
||||
- `CURL_DISABLE_TELNET` disables TELNET
|
||||
- `CURL_DISABLE_DICT` disables DICT
|
||||
- `CURL_DISABLE_FILE` disables FILE
|
||||
- `CURL_DISABLE_TFTP` disables TFTP
|
||||
- `CURL_DISABLE_HTTP` disables HTTP
|
||||
- `CURL_DISABLE_IMAP` disables IMAP
|
||||
- `CURL_DISABLE_POP3` disables POP3
|
||||
- `CURL_DISABLE_SMTP` disables SMTP
|
||||
|
||||
If you want to set any of these defines you have the following options:
|
||||
|
||||
- Modify lib/config-win32.h
|
||||
- Modify lib/curl_setup.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.
|
||||
|
||||
## 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:
|
||||
|
||||
- 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.
|
||||
|
||||
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
|
||||
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).
|
||||
|
||||
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.
|
||||
|
||||
## Important static libcurl usage note
|
||||
|
||||
When building an application that uses the static libcurl library on Windows,
|
||||
you must add `-DCURL_STATICLIB` to your `CFLAGS`. Otherwise the linker will
|
||||
look for dynamic import symbols.
|
||||
|
||||
## Legacy Windows and SSL
|
||||
|
||||
WinSSL (specifically Schannel from Windows SSPI), is the native SSL library in
|
||||
Windows. However, WinSSL 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.
|
||||
|
||||
# Apple iOS and Mac OS X
|
||||
|
||||
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-darwinssl`. (It is not
|
||||
necessary to use the option `--without-ssl`.) This feature requires iOS 5.0 or
|
||||
later, or OS X 10.5 ("Leopard") or later.
|
||||
|
||||
When Secure Transport is in use, the curl options `--cacert` and `--capath`
|
||||
and their libcurl equivalents, will be ignored, because Secure Transport uses
|
||||
the certificates stored in the Keychain to evaluate whether or not to trust
|
||||
the server. This, of course, includes the root certificates that ship with the
|
||||
OS. The `--cert` and `--engine` options, and their libcurl equivalents, are
|
||||
currently unimplemented in curl with Secure Transport.
|
||||
|
||||
For OS X users: In OS X 10.8 ("Mountain Lion"), Apple made a major overhaul to
|
||||
the Secure Transport API that, among other things, added support for the newer
|
||||
TLS 1.1 and 1.2 protocols. To get curl to support TLS 1.1 and 1.2, you must
|
||||
build curl on Mountain Lion or later, or by using the equivalent SDK. If you
|
||||
set the `MACOSX_DEPLOYMENT_TARGET` environmental variable to an earlier
|
||||
version of OS X prior to building curl, then curl will use the new Secure
|
||||
Transport API on Mountain Lion and later, and fall back on the older API when
|
||||
the same curl binary is executed on older cats. For example, running these
|
||||
commands in curl's directory in the shell will build the code such that it
|
||||
will run on cats as old as OS X 10.6 ("Snow Leopard") (using bash):
|
||||
|
||||
export MACOSX_DEPLOYMENT_TARGET="10.6"
|
||||
./configure --with-darwinssl
|
||||
make
|
||||
|
||||
# Cross compile
|
||||
|
||||
Download and unpack the curl package.
|
||||
|
||||
'cd' to the new directory. (e.g. `cd curl-7.12.3`)
|
||||
|
||||
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.
|
||||
|
||||
#! /bin/sh
|
||||
|
||||
export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin
|
||||
export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include"
|
||||
export AR=ppc_405-ar
|
||||
export AS=ppc_405-as
|
||||
export LD=ppc_405-ld
|
||||
export RANLIB=ppc_405-ranlib
|
||||
export CC=ppc_405-gcc
|
||||
export NM=ppc_405-nm
|
||||
|
||||
./configure --target=powerpc-hardhat-linux
|
||||
--host=powerpc-hardhat-linux
|
||||
--build=i586-pc-linux-gnu
|
||||
--prefix=/opt/hardhat/devkit/ppc/405/target/usr/local
|
||||
--exec-prefix=/usr/local
|
||||
|
||||
You may also need to provide a parameter like `--with-random=/dev/urandom` to
|
||||
configure as it cannot detect the presence of a random number generating
|
||||
device for a target system. The `--prefix` parameter specifies where curl
|
||||
will be installed. If `configure` completes successfully, do `make` and `make
|
||||
install` as usual.
|
||||
|
||||
In some cases, you may be able to simplify the above commands to as little as:
|
||||
|
||||
./configure --host=ARCH-OS
|
||||
|
||||
# REDUCING SIZE
|
||||
|
||||
There are a number of configure options that can be used to reduce the size of
|
||||
libcurl for embedded applications where binary size is an important factor.
|
||||
First, be sure to set the CFLAGS variable when configuring with any relevant
|
||||
compiler optimization flags to reduce the size of the binary. For gcc, this
|
||||
would mean at minimum the -Os option, and potentially the `-march=X`,
|
||||
`-mdynamic-no-pic` and `-flto` options as well, e.g.
|
||||
|
||||
./configure CFLAGS='-Os' LDFLAGS='-Wl,-Bsymbolic'...
|
||||
|
||||
Note that newer compilers often produce smaller code than older versions
|
||||
due to improved optimization.
|
||||
|
||||
Be sure to specify as many `--disable-` and `--without-` flags on the
|
||||
configure command-line as you can to disable all the libcurl features that you
|
||||
know your application is not going to need. Besides specifying the
|
||||
`--disable-PROTOCOL` flags for all the types of URLs your application will not
|
||||
use, here are some other flags that can reduce the size of the library:
|
||||
|
||||
- `--disable-ares` (disables support for the C-ARES DNS library)
|
||||
- `--disable-cookies` (disables support for HTTP cookies)
|
||||
- `--disable-crypto-auth` (disables HTTP cryptographic authentication)
|
||||
- `--disable-ipv6` (disables support for IPv6)
|
||||
- `--disable-manual` (disables support for the built-in documentation)
|
||||
- `--disable-proxy` (disables support for HTTP and SOCKS proxies)
|
||||
- `--disable-unix-sockets` (disables support for UNIX sockets)
|
||||
- `--disable-verbose` (eliminates debugging strings and error code strings)
|
||||
- `--disable-versioned-symbols` (disables support for versioned symbols)
|
||||
- `--enable-hidden-symbols` (eliminates unneeded symbols in the shared library)
|
||||
- `--without-libidn` (disables support for the libidn DNS library)
|
||||
- `--without-librtmp` (disables support for RTMP)
|
||||
- `--without-ssl` (disables support for SSL/TLS)
|
||||
- `--without-zlib` (disables support for on-the-fly decompression)
|
||||
|
||||
The GNU compiler and linker have a number of options that can reduce the
|
||||
size of the libcurl dynamic libraries on some platforms even further.
|
||||
Specify them by providing appropriate CFLAGS and LDFLAGS variables on the
|
||||
configure command-line, e.g.
|
||||
|
||||
CFLAGS="-Os -ffunction-sections -fdata-sections
|
||||
-fno-unwind-tables -fno-asynchronous-unwind-tables -flto"
|
||||
LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections"
|
||||
|
||||
Be sure also to strip debugging symbols from your binaries after compiling
|
||||
using 'strip' (or the appropriate variant if cross-compiling). If space is
|
||||
really tight, you may be able to remove some unneeded sections of the shared
|
||||
library using the -R option to objcopy (e.g. the .comment section).
|
||||
|
||||
Using these techniques it is possible to create a basic HTTP-only shared
|
||||
libcurl library for i386 Linux platforms that is only 113 KiB in size, and an
|
||||
FTP-only library that is 113 KiB in size (as of libcurl version 7.50.3, using
|
||||
gcc 5.4.0).
|
||||
|
||||
You may find that statically linking libcurl to your application will result
|
||||
in a lower total size than dynamically linking.
|
||||
|
||||
Note that the curl test harness can detect the use of some, but not all, of
|
||||
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:
|
||||
|
||||
- `--disable-cookies` !cookies
|
||||
- `--disable-manual` !--manual
|
||||
- `--disable-proxy` !HTTP\ proxy !proxytunnel !SOCKS4 !SOCKS5
|
||||
|
||||
# PORTS
|
||||
|
||||
This is a probably incomplete list of known hardware and operating systems
|
||||
that curl has been compiled for. If you know a system curl compiles and
|
||||
runs on, that isn't listed, please let us know!
|
||||
|
||||
- Alpha DEC OSF 4
|
||||
- Alpha Digital UNIX v3.2
|
||||
- Alpha FreeBSD 4.1, 4.5
|
||||
- Alpha Linux 2.2, 2.4
|
||||
- Alpha NetBSD 1.5.2
|
||||
- Alpha OpenBSD 3.0
|
||||
- Alpha OpenVMS V7.1-1H2
|
||||
- Alpha Tru64 v5.0 5.1
|
||||
- AVR32 Linux
|
||||
- ARM Android 1.5, 2.1, 2.3, 3.2, 4.x
|
||||
- ARM INTEGRITY
|
||||
- ARM iOS
|
||||
- Cell Linux
|
||||
- Cell Cell OS
|
||||
- HP-PA HP-UX 9.X 10.X 11.X
|
||||
- HP-PA Linux
|
||||
- HP3000 MPE/iX
|
||||
- MicroBlaze uClinux
|
||||
- MIPS IRIX 6.2, 6.5
|
||||
- MIPS Linux
|
||||
- OS/400
|
||||
- Pocket PC/Win CE 3.0
|
||||
- Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1, 5.2
|
||||
- PowerPC Darwin 1.0
|
||||
- PowerPC INTEGRITY
|
||||
- PowerPC Linux
|
||||
- PowerPC Mac OS 9
|
||||
- PowerPC Mac OS X
|
||||
- SH4 Linux 2.6.X
|
||||
- SH4 OS21
|
||||
- SINIX-Z v5
|
||||
- Sparc Linux
|
||||
- Sparc Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8, 9, 10
|
||||
- Sparc SunOS 4.1.X
|
||||
- StrongARM (and other ARM) RISC OS 3.1, 4.02
|
||||
- StrongARM/ARM7/ARM9 Linux 2.4, 2.6
|
||||
- StrongARM NetBSD 1.4.1
|
||||
- Symbian OS (P.I.P.S.) 9.x
|
||||
- TPF
|
||||
- Ultrix 4.3a
|
||||
- UNICOS 9.0
|
||||
- i386 BeOS
|
||||
- i386 DOS
|
||||
- i386 eCos 1.3.1
|
||||
- i386 Esix 4.1
|
||||
- i386 FreeBSD
|
||||
- i386 HURD
|
||||
- i386 Haiku OS
|
||||
- i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4, 2.6
|
||||
- i386 Mac OS X
|
||||
- i386 MINIX 3.1
|
||||
- i386 NetBSD
|
||||
- i386 Novell NetWare
|
||||
- i386 OS/2
|
||||
- i386 OpenBSD
|
||||
- i386 QNX 6
|
||||
- i386 SCO unix
|
||||
- i386 Solaris 2.7
|
||||
- i386 Windows 95, 98, ME, NT, 2000, XP, 2003
|
||||
- i486 ncr-sysv4.3.03 (NCR MP-RAS)
|
||||
- ia64 Linux 2.3.99
|
||||
- m68k AmigaOS 3
|
||||
- m68k Linux
|
||||
- m68k uClinux
|
||||
- m68k OpenBSD
|
||||
- m88k dg-dgux5.4R3.00
|
||||
- s390 Linux
|
||||
- x86_64 Linux
|
||||
- XScale/PXA250 Linux 2.4
|
||||
- Nios II uClinux
|
@ -1,5 +1,5 @@
|
||||
Table of Contents
|
||||
=================
|
||||
curl internals
|
||||
==============
|
||||
|
||||
- [Intro](#intro)
|
||||
- [git](#git)
|
||||
@ -7,9 +7,9 @@ Table of Contents
|
||||
- [Windows vs Unix](#winvsunix)
|
||||
- [Library](#Library)
|
||||
- [`Curl_connect`](#Curl_connect)
|
||||
- [`Curl_do`](#Curl_do)
|
||||
- [`multi_do`](#multi_do)
|
||||
- [`Curl_readwrite`](#Curl_readwrite)
|
||||
- [`Curl_done`](#Curl_done)
|
||||
- [`multi_done`](#multi_done)
|
||||
- [`Curl_disconnect`](#Curl_disconnect)
|
||||
- [HTTP(S)](#http)
|
||||
- [FTP](#ftp)
|
||||
@ -40,8 +40,8 @@ Table of Contents
|
||||
- [Structs in libcurl](#structs)
|
||||
|
||||
<a name="intro"></a>
|
||||
curl internals
|
||||
==============
|
||||
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
|
||||
@ -56,7 +56,7 @@ git
|
||||
|
||||
All changes to the sources are committed to the git repository as soon as
|
||||
they're somewhat verified to work. Changes shall be committed as independently
|
||||
as possible so that individual changes can be easier spotted and tracked
|
||||
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
|
||||
@ -78,17 +78,16 @@ Dependencies
|
||||
------------
|
||||
|
||||
- OpenSSL 0.9.7
|
||||
- GnuTLS 1.2
|
||||
- GnuTLS 2.11.3
|
||||
- zlib 1.1.4
|
||||
- libssh2 0.16
|
||||
- c-ares 1.6.0
|
||||
- libidn 0.4.1
|
||||
- libidn2 2.0.0
|
||||
- cyassl 2.0.0
|
||||
- openldap 2.0
|
||||
- MIT Kerberos 1.2.4
|
||||
- GSKit V5R3M0
|
||||
- NSS 3.14.x
|
||||
- axTLS 1.2.7
|
||||
- PolarSSL 1.3.0
|
||||
- Heimdal ?
|
||||
- nghttp2 1.0.0
|
||||
@ -98,7 +97,7 @@ Operating Systems
|
||||
|
||||
On systems where configure runs, we aim at working on them all - if they have
|
||||
a suitable C compiler. On systems that don't run configure, we strive to keep
|
||||
curl running fine on:
|
||||
curl running correctly on:
|
||||
|
||||
- Windows 98
|
||||
- AS/400 V5R3M0
|
||||
@ -126,13 +125,13 @@ Build tools
|
||||
Windows vs Unix
|
||||
===============
|
||||
|
||||
There are a few differences in how to program curl the unix way compared to
|
||||
the Windows way. The four perhaps most notable details are:
|
||||
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 at all places except for the header file that defines them. The
|
||||
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.
|
||||
@ -142,7 +141,7 @@ Windows vs Unix
|
||||
behaviour.
|
||||
|
||||
3. The file descriptors for network communication and file operations are
|
||||
not easily interchangeable as in unix.
|
||||
not as easily interchangeable as in Unix.
|
||||
|
||||
We avoid this by not trying any funny tricks on file descriptors.
|
||||
|
||||
@ -156,25 +155,25 @@ Windows vs Unix
|
||||
conditionals that deal with features *should* instead be in the format
|
||||
`#ifdef HAVE_THAT_WEIRD_FUNCTION`. Since Windows can't run configure scripts,
|
||||
we maintain a `curl_config-win32.h` file in lib directory that is supposed to
|
||||
look exactly as a `curl_config.h` file would have looked like on a Windows
|
||||
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. Don't walk on the edge.
|
||||
operating systems. Don't walk on the edge!
|
||||
|
||||
<a name="Library"></a>
|
||||
Library
|
||||
=======
|
||||
|
||||
(See `LIBCURL-STRUCTS` for a separate document describing all major internal
|
||||
structs and their purposes.)
|
||||
(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
|
||||
`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 initing if SSL is enabled and it can init
|
||||
the socket layer on windows machines. libcurl itself has no "global" scope.
|
||||
@ -184,14 +183,14 @@ Library
|
||||
|
||||
[ `curl_easy_init()`][2] allocates an internal struct and makes some
|
||||
initializations. The returned handle does not reveal internals. This is the
|
||||
'SessionHandle' struct which works as an "anchor" struct for all `curl_easy`
|
||||
`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 'SessionHandle' struct.
|
||||
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()`,
|
||||
@ -218,21 +217,21 @@ Curl_connect()
|
||||
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
|
||||
inited/inherited from the SessionHandle struct.
|
||||
inited/inherited from the `Curl_easy` struct.
|
||||
|
||||
<a name="Curl_do"></a>
|
||||
Curl_do()
|
||||
<a name="multi_do"></a>
|
||||
multi_do()
|
||||
---------
|
||||
|
||||
`Curl_do()` makes sure the proper protocol-specific function is called. The
|
||||
`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. They have access to the `Curl_sendf()` (from
|
||||
lib/sendf.c) function to send printf-style formatted data to the remote
|
||||
host and when they're ready to make the actual file transfer they call the
|
||||
`Curl_Transfer()` function (in lib/transfer.c) to setup the transfer and
|
||||
returns.
|
||||
`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
|
||||
@ -240,28 +239,24 @@ Curl_do()
|
||||
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.
|
||||
|
||||
Some time during the DO function, the `Curl_setup_transfer()` function must
|
||||
be called with some basic info about the upcoming transfer: what socket(s)
|
||||
to read/write and the expected file transfer sizes (if known).
|
||||
|
||||
<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 a
|
||||
frequent interval (or at the user's choice, a specified callback might get
|
||||
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="Curl_done"></a>
|
||||
Curl_done()
|
||||
<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 `Curl_do()` should be possible to call again on
|
||||
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()`.
|
||||
|
||||
@ -272,7 +267,7 @@ 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
|
||||
is going to be made on the connection. It can be also closed by force, or
|
||||
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 doesn't keep too many
|
||||
connections alive at the same time.
|
||||
|
||||
@ -290,7 +285,7 @@ HTTP(S)
|
||||
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 means the same procedure as HTTP, with only two
|
||||
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
|
||||
@ -301,8 +296,9 @@ HTTP(S)
|
||||
|
||||
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 done the entire request is sent off in one single write. This
|
||||
is done this way to overcome problems with flawed firewalls and lame servers.
|
||||
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
|
||||
@ -318,7 +314,7 @@ FTP
|
||||
|
||||
<a name="kerberos"></a>
|
||||
Kerberos
|
||||
--------
|
||||
========
|
||||
|
||||
Kerberos support is mainly in lib/krb5.c and lib/security.c but also
|
||||
`curl_sasl_sspi.c` and `curl_sasl_gssapi.c` for the email protocols and
|
||||
@ -385,23 +381,23 @@ Persistent Connections
|
||||
The persistent connection support in libcurl requires some considerations on
|
||||
how to do things inside of the library.
|
||||
|
||||
- The 'SessionHandle' struct returned in the [`curl_easy_init()`][2] call
|
||||
- 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 'SessionHandle' struct holds the "connection cache" (an array of
|
||||
- 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 the cache. If the cache is full already when a new
|
||||
connection is added added, it will first close the oldest unused one.
|
||||
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 won't be kept open of course.
|
||||
closure on connections and then they won't 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.
|
||||
@ -414,7 +410,7 @@ multi interface/non-blocking
|
||||
============================
|
||||
|
||||
The multi interface is a non-blocking interface to the library. To make that
|
||||
interface work as good as possible, no low-level functions within libcurl
|
||||
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.)
|
||||
|
||||
@ -465,7 +461,7 @@ Return Codes and Informationals
|
||||
description.
|
||||
|
||||
In aiding the user to understand what's happening and to debug curl usage, we
|
||||
must supply a fair amount of informational messages by using the
|
||||
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
|
||||
isn't otherwise obvious.
|
||||
@ -485,11 +481,11 @@ 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
|
||||
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 messes around to setup its 'config' struct properly, then
|
||||
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.
|
||||
@ -542,13 +538,13 @@ Test Suite
|
||||
|
||||
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.
|
||||
test suite currently only runs on Unix-like platforms.
|
||||
|
||||
You'll 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.
|
||||
debugging enabled, and if it was, it will detect memory leaks, too.
|
||||
|
||||
<a name="asyncdns"></a>
|
||||
Asynchronous name resolves
|
||||
@ -589,11 +585,12 @@ Asynchronous name resolves
|
||||
`curl_off_t`
|
||||
==========
|
||||
|
||||
curl_off_t is a data type provided by the external libcurl include
|
||||
`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 64bit large on most modern
|
||||
platforms.
|
||||
|
||||
<a name="curlx"></a>
|
||||
curlx
|
||||
=====
|
||||
|
||||
@ -607,34 +604,20 @@ curlx
|
||||
|
||||
`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
|
||||
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
|
||||
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().
|
||||
|
||||
`curlx_tvnow()`
|
||||
---------------
|
||||
returns a struct timeval for the current time.
|
||||
|
||||
`curlx_tvdiff()`
|
||||
--------------
|
||||
returns the difference between two timeval structs, in number of
|
||||
milliseconds.
|
||||
|
||||
`curlx_tvdiff_secs()`
|
||||
---------------------
|
||||
returns the same as curlx_tvdiff but with full usec resolution (as a
|
||||
double)
|
||||
|
||||
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_
|
||||
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 get built properly
|
||||
with the new function names. The functions this concerns are:
|
||||
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`
|
||||
@ -657,29 +640,29 @@ 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 of a set of
|
||||
commonly available compression techniques. These schemes are 'deflate' (the
|
||||
zlib algorithm), 'gzip' and 'compress'. A client requests that the sever
|
||||
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 scheme was
|
||||
used to encode the data.
|
||||
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.
|
||||
|
||||
A client may tell a server that it can understand several different encoding
|
||||
schemes. In this case the server may choose any one of those and use it to
|
||||
encode the response (indicating which one using the Content-Encoding header).
|
||||
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.
|
||||
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' and 'gzip' content encoding are supported by libcurl. Both
|
||||
regular and chunked transfers work fine. The zlib library is required for
|
||||
this feature.
|
||||
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
|
||||
|
||||
@ -689,14 +672,15 @@ Content Encoding
|
||||
|
||||
where string is the intended value of the Accept-Encoding header.
|
||||
|
||||
Currently, libcurl only understands how to process responses that use the
|
||||
"deflate" or "gzip" Content-Encoding, so the only values for
|
||||
[`CURLOPT_ACCEPT_ENCODING`][5] that will work (besides "identity," which does
|
||||
nothing) are "deflate" and "gzip" 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.
|
||||
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
|
||||
@ -719,7 +703,7 @@ hostip.c explained
|
||||
|
||||
this host has getaddrinfo() and family, and thus we use that. The host may
|
||||
not be able to resolve IPv6, but we don't really have to take that into
|
||||
account. Hosts that aren't IPv6-enabled have CURLRES_IPV4 defined.
|
||||
account. Hosts that aren't IPv6-enabled have `CURLRES_IPV4` defined.
|
||||
|
||||
## `CURLRES_ARES`
|
||||
|
||||
@ -750,7 +734,7 @@ hostip.c explained
|
||||
- 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.
|
||||
`CURLRES_*` defines based on the config*.h and `curl_setup.h` defines.
|
||||
|
||||
<a name="memoryleak"></a>
|
||||
Track Down Memory Leaks
|
||||
@ -767,7 +751,7 @@ Track Down Memory Leaks
|
||||
|
||||
Rebuild libcurl with -DCURLDEBUG (usually, rerunning configure with
|
||||
--enable-debug fixes this). 'make clean' first, then 'make' so that all
|
||||
files actually are rebuilt properly. It will also make sense to build
|
||||
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.
|
||||
|
||||
@ -828,16 +812,16 @@ Track Down Memory Leaks
|
||||
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 a struct to each easy handle in which we store
|
||||
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 time there is until the next nearest timer expires
|
||||
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) return the easy handle that waits for action on
|
||||
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).
|
||||
|
||||
@ -856,38 +840,38 @@ Structs in libcurl
|
||||
This section should cover 7.32.0 pretty accurately, but will make sense even
|
||||
for older and later versions as things don't change drastically that often.
|
||||
|
||||
## SessionHandle
|
||||
## Curl_easy
|
||||
|
||||
The SessionHandle handle 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.
|
||||
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
|
||||
SessionHandle->easy_conn.
|
||||
`Curl_easy->easy_conn`.
|
||||
|
||||
Data and information that regard this particular single transfer is put in
|
||||
the SingleRequest sub-struct.
|
||||
|
||||
When the SessionHandle struct is added to a multi handle, as it must be in
|
||||
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 SessionHandle structs that are added to
|
||||
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 SessionHandle. When
|
||||
->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 SessionHandle when [`curl_multi_fdset()`][12] is called etc.
|
||||
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 SessionHandle.
|
||||
points to the `Curl_easy`.
|
||||
|
||||
When doing multiplexed HTTP/2 transfers, each SessionHandle is associated
|
||||
with an individual stream, sharing the same connectdata struct. Multiplexing
|
||||
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!
|
||||
|
||||
## connectdata
|
||||
@ -901,22 +885,21 @@ for older and later versions as things don't change drastically that often.
|
||||
the connection can't be kept alive, the connection will be closed after use
|
||||
and then this struct can be removed from the cache and freed.
|
||||
|
||||
Thus, the same SessionHandle can be used multiple times and each time select
|
||||
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 SessionHandle.
|
||||
connection or the `Curl_easy`.
|
||||
|
||||
Functions in libcurl will assume that connectdata->data points to the
|
||||
SessionHandle that uses this connection (for the moment).
|
||||
`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 SessionHandle 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` SessionHandle in the `Curl_multi` struct to use when
|
||||
needed.
|
||||
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
|
||||
@ -930,36 +913,37 @@ for older and later versions as things don't change drastically that often.
|
||||
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.
|
||||
`Curl_multi` is the multi handle struct exposed as "CURLM *" in external
|
||||
APIs.
|
||||
|
||||
This struct holds a list of SessionHandle 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 SessionHandles.
|
||||
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
|
||||
`->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 SessionHandle's transfer has completed.
|
||||
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.
|
||||
`->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 SessionHandles, sorted by the remaining time
|
||||
until it should be checked - normally some sort of timeout. Each
|
||||
SessionHandle has one node in the tree.
|
||||
`->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 to
|
||||
which SessionHandle that uses that descriptor. This is necessary for the
|
||||
`->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
|
||||
`->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.
|
||||
`->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.
|
||||
points to the `Curl_multi` struct.
|
||||
|
||||
## Curl_handler
|
||||
|
||||
@ -972,41 +956,41 @@ for older and later versions as things don't change drastically that often.
|
||||
from a single array which is scanned through when a URL is given to libcurl
|
||||
to work with.
|
||||
|
||||
->scheme is the URL scheme name, usually spelled out in uppercase. That's
|
||||
"HTTP" or "FTP" etc. SSL versions of the protcol need its own `Curl_handler`
|
||||
setup so HTTPS separate from HTTP.
|
||||
`->scheme` is the URL scheme name, usually spelled out in uppercase. That's
|
||||
"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 SessionHandle 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
|
||||
SessionHandle->req.protop to point to it.
|
||||
`->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.protop` to point to it.
|
||||
|
||||
->connect_it allows a protocol to do some specific actions after the TCP
|
||||
`->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.
|
||||
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.
|
||||
`->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
|
||||
`->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`.
|
||||
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)
|
||||
`->doing` keeps getting called while issuing the transfer request command(s)
|
||||
|
||||
->done gets called when the transfer is complete and DONE. That's after the
|
||||
`->done` gets called when the transfer is complete and DONE. That's 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.
|
||||
`->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`
|
||||
@ -1035,11 +1019,11 @@ for older and later versions as things don't change drastically that often.
|
||||
|
||||
- `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
|
||||
protocol handlers.
|
||||
|
||||
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 about.
|
||||
concern itself with.
|
||||
|
||||
- `PROTOPT_NONETWORK` - a protocol that doesn't use network (read file:)
|
||||
|
||||
@ -1051,21 +1035,21 @@ for older and later versions as things don't change drastically that often.
|
||||
|
||||
## conncache
|
||||
|
||||
Is a hash table with connections for later re-use. Each SessionHandle has
|
||||
a pointer to its connection cache. Each multi handle sets up a connection
|
||||
cache that all added SessionHandles share by default.
|
||||
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.
|
||||
|
||||
## 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 own versions of caches and
|
||||
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 SessionHandles will use the caches/pools that this share handle
|
||||
specific `Curl_easy`s will use the caches/pools that this share handle
|
||||
holds.
|
||||
|
||||
Then individual SessionHandle structs can be made to share specific things
|
||||
Then individual `Curl_easy` structs can be made to share specific things
|
||||
that they otherwise wouldn't, such as cookies.
|
||||
|
||||
The `Curl_share` struct can currently hold cookies, DNS cache and the SSL
|
||||
@ -1074,22 +1058,23 @@ for older and later versions as things don't change drastically that often.
|
||||
## CookieInfo
|
||||
|
||||
This is the main cookie struct. It holds all known cookies and related
|
||||
information. Each SessionHandle has its own private CookieInfo even when
|
||||
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]: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
|
||||
[2]: http://curl.haxx.se/libcurl/c/curl_easy_init.html
|
||||
[3]: http://c-ares.haxx.se/
|
||||
[1]: https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
|
||||
[2]: https://curl.haxx.se/libcurl/c/curl_easy_init.html
|
||||
[3]: https://c-ares.haxx.se/
|
||||
[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
|
||||
[5]: http://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
|
||||
[6]: http://curl.haxx.se/docs/manpage.html#--compressed
|
||||
[7]: http://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
|
||||
[8]: http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
|
||||
[9]: http://curl.haxx.se/libcurl/c/curl_multi_setopt.html
|
||||
[10]: http://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
|
||||
[11]: http://curl.haxx.se/libcurl/c/curl_multi_perform.html
|
||||
[12]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
|
||||
[13]: http://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
|
||||
[14]: http://curl.haxx.se/libcurl/c/curl_multi_info_read.html
|
||||
[5]: https://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
|
||||
[6]: https://curl.haxx.se/docs/manpage.html#--compressed
|
||||
[7]: https://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
|
||||
[8]: https://curl.haxx.se/libcurl/c/curl_multi_timeout.html
|
||||
[9]: https://curl.haxx.se/libcurl/c/curl_multi_setopt.html
|
||||
[10]: https://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
|
||||
[11]: https://curl.haxx.se/libcurl/c/curl_multi_perform.html
|
||||
[12]: https://curl.haxx.se/libcurl/c/curl_multi_fdset.html
|
||||
[13]: https://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
|
||||
[14]: https://curl.haxx.se/libcurl/c/curl_multi_info_read.html
|
||||
[15]: https://tools.ietf.org/html/rfc7231#section-3.1.2.2
|
@ -1,257 +1,755 @@
|
||||
These are problems known to exist at the time of this release. Feel free to
|
||||
join in and help us correct one or more of these! Also be sure to check the
|
||||
changelog of the current development status, as one or more of these problems
|
||||
may have been fixed since this was written!
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
90. IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
|
||||
code reveals that pingpong.c contains some truncation code, at line 408,
|
||||
when it deems the server response to be too large truncating it to 40
|
||||
characters"
|
||||
http://curl.haxx.se/bug/view.cgi?id=1366
|
||||
Known Bugs
|
||||
|
||||
89. Disabling HTTP Pipelining when there are ongoing transfers can lead to
|
||||
heap corruption and crash. http://curl.haxx.se/bug/view.cgi?id=1411
|
||||
These are problems and bugs known to exist at the time of this release. Feel
|
||||
free to join in and help us correct one or more of these! Also be sure to
|
||||
check the changelog of the current development status, as one or more of these
|
||||
problems may have been fixed or changed somewhat since this was written!
|
||||
|
||||
88. libcurl doesn't support CURLINFO_FILETIME for SFTP transfers and thus
|
||||
curl's -R option also doesn't work then.
|
||||
1. HTTP
|
||||
1.1 CURLFORM_CONTENTLEN in an array
|
||||
1.2 Disabling HTTP Pipelining
|
||||
1.3 STARTTRANSFER time is wrong for HTTP POSTs
|
||||
1.4 multipart formposts file name encoding
|
||||
1.5 Expect-100 meets 417
|
||||
1.6 Unnecessary close when 401 received waiting for 100
|
||||
1.7 Deflate error after all content was received
|
||||
1.9 HTTP/2 frames while in the connection pool kill reuse
|
||||
1.10 Strips trailing dot from host name
|
||||
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
|
||||
|
||||
87. -J/--remote-header-name doesn't decode %-encoded file names. RFC6266
|
||||
details how it should be done. The can of worm is basically that we have no
|
||||
charset handling in curl and ascii >=128 is a challenge for us. Not to
|
||||
mention that decoding also means that we need to check for nastiness that is
|
||||
attempted, like "../" sequences and the like. Probably everything to the left
|
||||
of any embedded slashes should be cut off.
|
||||
http://curl.haxx.se/bug/view.cgi?id=1294
|
||||
2. TLS
|
||||
2.1 CURLINFO_SSL_VERIFYRESULT has limited support
|
||||
2.2 DER in keychain
|
||||
2.3 GnuTLS backend skips really long certificate fields
|
||||
2.4 DarwinSSL won't import PKCS#12 client certificates without a password
|
||||
2.5 Client cert handling with Issuer DN differs between backends
|
||||
2.6 CURL_GLOBAL_SSL
|
||||
2.7 Client cert (MTLS) issues with Schannel
|
||||
|
||||
86. The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3
|
||||
and SMTP if a failure occurs during the authentication phase of a
|
||||
connection.
|
||||
3. Email protocols
|
||||
3.1 IMAP SEARCH ALL truncated response
|
||||
3.2 No disconnect command
|
||||
3.3 SMTP to multiple recipients
|
||||
3.4 POP3 expects "CRLF.CRLF" eob for some single-line responses
|
||||
|
||||
85. Wrong STARTTRANSFER timer accounting for POST requests
|
||||
Timer works fine with GET requests, but while using POST the time for
|
||||
CURLINFO_STARTTRANSFER_TIME is wrong. While using POST
|
||||
CURLINFO_STARTTRANSFER_TIME minus CURLINFO_PRETRANSFER_TIME is near to zero
|
||||
every time.
|
||||
http://curl.haxx.se/bug/view.cgi?id=1213
|
||||
4. Command line
|
||||
4.1 -J and -O with %-encoded file names
|
||||
4.2 -J with -C - fails
|
||||
4.3 --retry and transfer timeouts
|
||||
4.4 --upload-file . hang if delay in STDIN
|
||||
4.5 Improve --data-urlencode space encoding
|
||||
|
||||
84. CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
|
||||
backends, so relying on this information in a generic app is flaky.
|
||||
5. Build and portability issues
|
||||
5.1 tests not compatible with python3
|
||||
5.2 curl-config --libs contains private details
|
||||
5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
|
||||
5.4 Cannot compile against a static build of OpenLDAP
|
||||
5.5 can't handle Unicode arguments in Windows
|
||||
5.6 cmake support gaps
|
||||
5.7 Visual Studio project gaps
|
||||
5.8 configure finding libs in wrong directory
|
||||
5.9 Utilize Requires.private directives in libcurl.pc
|
||||
|
||||
82. When building with the Windows Borland compiler, it fails because the
|
||||
"tlib" tool doesn't support hyphens (minus signs) in file names and we have
|
||||
such in the build.
|
||||
http://curl.haxx.se/bug/view.cgi?id=1222
|
||||
6. Authentication
|
||||
6.1 NTLM authentication and unicode
|
||||
6.2 MIT Kerberos for Windows build
|
||||
6.3 NTLM in system context uses wrong name
|
||||
6.4 Negotiate and Kerberos V5 need a fake user name
|
||||
6.5 NTLM doesn't support password with § character
|
||||
6.6 libcurl can fail to try alternatives with --proxy-any
|
||||
|
||||
81. When using -J (with -O), automatically resumed downloading together with
|
||||
"-C -" fails. Without -J the same command line works! This happens because
|
||||
the resume logic is worked out before the target file name (and thus its
|
||||
pre-transfer size) has been figured out!
|
||||
http://curl.haxx.se/bug/view.cgi?id=1169
|
||||
7. FTP
|
||||
7.1 FTP without or slow 220 response
|
||||
7.2 FTP with CONNECT and slow server
|
||||
7.3 FTP with NOBODY and FAILONERROR
|
||||
7.4 FTP with ACCT
|
||||
7.5 ASCII FTP
|
||||
7.6 FTP with NULs in URL parts
|
||||
7.7 FTP and empty path parts in the URL
|
||||
7.8 Premature transfer end but healthy control channel
|
||||
7.9 Passive transfer tries only one IP address
|
||||
7.10 Stick to same family over SOCKS proxy
|
||||
|
||||
80. Curl doesn't recognize certificates in DER format in keychain, but it
|
||||
works with PEM.
|
||||
http://curl.haxx.se/bug/view.cgi?id=1065
|
||||
8. TELNET
|
||||
8.1 TELNET and time limitations don't work
|
||||
8.2 Microsoft telnet server
|
||||
|
||||
79. SMTP. When sending data to multiple recipients, curl will abort and return
|
||||
failure if one of the recipients indicate failure (on the "RCPT TO"
|
||||
command). Ordinary mail programs would proceed and still send to the ones
|
||||
that can receive data. This is subject for change in the future.
|
||||
http://curl.haxx.se/bug/view.cgi?id=1116
|
||||
9. SFTP and SCP
|
||||
9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
|
||||
|
||||
78. curl and libcurl don't always signal the client properly when "sending"
|
||||
zero bytes files - it makes for example the command line client not creating
|
||||
any file at all. Like when using FTP.
|
||||
http://curl.haxx.se/bug/view.cgi?id=1063
|
||||
10. SOCKS
|
||||
10.1 SOCKS proxy connections are done blocking
|
||||
10.2 SOCKS don't support timeouts
|
||||
10.3 FTPS over SOCKS
|
||||
10.4 active FTP over a SOCKS
|
||||
|
||||
76. The SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on
|
||||
that platform), and long is only 32 bits. It makes it impossible for
|
||||
curl_easy_getinfo() to return a socket properly with the CURLINFO_LASTSOCKET
|
||||
option as for all other operating systems.
|
||||
11. Internals
|
||||
11.1 Curl leaks .onion hostnames in DNS
|
||||
11.2 error buffer not set if connection to multiple addresses fails
|
||||
11.3 c-ares deviates from stock resolver on http://1346569778
|
||||
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
|
||||
|
||||
75. NTLM authentication involving unicode user name or password only works
|
||||
properly if built with UNICODE defined together with the WinSSL/schannel
|
||||
backend. The original problem was mentioned in:
|
||||
http://curl.haxx.se/mail/lib-2009-10/0024.html
|
||||
http://curl.haxx.se/bug/view.cgi?id=896
|
||||
12. LDAP and OpenLDAP
|
||||
12.1 OpenLDAP hangs after returning results
|
||||
|
||||
The WinSSL/schannel version verified to work as mentioned in
|
||||
http://curl.haxx.se/mail/lib-2012-07/0073.html
|
||||
13. TCP/IP
|
||||
13.1 --interface for ipv6 binds to unusable IP address
|
||||
|
||||
73. if a connection is made to a 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 people. Brought up (and is being misunderstood) in:
|
||||
http://curl.haxx.se/bug/view.cgi?id=856
|
||||
14 DICT
|
||||
14.1 DICT responses show the underlying protocol
|
||||
|
||||
72. "Pausing pipeline problems."
|
||||
http://curl.haxx.se/mail/lib-2009-07/0214.html
|
||||
==============================================================================
|
||||
|
||||
70. Problem re-using easy handle after call to curl_multi_remove_handle
|
||||
http://curl.haxx.se/mail/lib-2009-07/0249.html
|
||||
1. HTTP
|
||||
|
||||
68. "More questions about ares behavior".
|
||||
http://curl.haxx.se/mail/lib-2009-08/0012.html
|
||||
1.1 CURLFORM_CONTENTLEN in an array
|
||||
|
||||
67. When creating multipart formposts. The file name part can be encoded with
|
||||
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
|
||||
It is not possible to pass a 64-bit value using CURLFORM_CONTENTLEN with
|
||||
CURLFORM_ARRAY, when compiled on 32-bit platforms that support 64-bit
|
||||
integers. This is because the underlying structure 'curl_forms' uses a dual
|
||||
purpose char* for storing these values in via casting. For more information
|
||||
see the now closed related issue:
|
||||
https://github.com/curl/curl/issues/608
|
||||
|
||||
66. When using telnet, the time limitation options don't work.
|
||||
http://curl.haxx.se/bug/view.cgi?id=846
|
||||
1.2 Disabling HTTP Pipelining
|
||||
|
||||
65. When doing FTP over a socks proxy or CONNECT through HTTP proxy and the
|
||||
multi interface is used, libcurl will fail if the (passive) TCP connection
|
||||
for the data transfer isn't more or less instant as the code does not
|
||||
properly wait for the connect to be confirmed. See test case 564 for a first
|
||||
shot at a test case.
|
||||
Disabling HTTP Pipelining when there are ongoing transfers can lead to
|
||||
heap corruption and crash. https://curl.haxx.se/bug/view.cgi?id=1411
|
||||
|
||||
63. When CURLOPT_CONNECT_ONLY is used, the handle cannot reliably be re-used
|
||||
for any further requests or transfers. The work-around is then to close that
|
||||
handle with curl_easy_cleanup() and create a new. Some more details:
|
||||
http://curl.haxx.se/mail/lib-2009-04/0300.html
|
||||
Similarly, removing a handle when pipelining corrupts data:
|
||||
https://github.com/curl/curl/issues/2101
|
||||
|
||||
61. If an upload using Expect: 100-continue receives an HTTP 417 response,
|
||||
it ought to be automatically resent without the Expect:. A workaround is
|
||||
for the client application to redo the transfer after disabling Expect:.
|
||||
http://curl.haxx.se/mail/archive-2008-02/0043.html
|
||||
1.3 STARTTRANSFER time is wrong for HTTP POSTs
|
||||
|
||||
60. libcurl closes the connection if an HTTP 401 reply is received while it
|
||||
is waiting for the the 100-continue response.
|
||||
http://curl.haxx.se/mail/lib-2008-08/0462.html
|
||||
Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with
|
||||
GET requests, but while using POST the time for CURLINFO_STARTTRANSFER_TIME
|
||||
is wrong. While using POST CURLINFO_STARTTRANSFER_TIME minus
|
||||
CURLINFO_PRETRANSFER_TIME is near to zero every time.
|
||||
|
||||
58. It seems sensible to be able to use CURLOPT_NOBODY and
|
||||
CURLOPT_FAILONERROR with FTP to detect if a file exists or not, but it is
|
||||
not working: http://curl.haxx.se/mail/lib-2008-07/0295.html
|
||||
https://github.com/curl/curl/issues/218
|
||||
https://curl.haxx.se/bug/view.cgi?id=1213
|
||||
|
||||
56. When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP
|
||||
server using the multi interface, the commands are not being sent correctly
|
||||
and instead the connection is "cancelled" (the operation is considered done)
|
||||
prematurely. There is a half-baked (busy-looping) patch provided in the bug
|
||||
report but it cannot be accepted as-is. See
|
||||
http://curl.haxx.se/bug/view.cgi?id=748
|
||||
1.4 multipart formposts file name encoding
|
||||
|
||||
55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
||||
library header files exporting symbols/macros that should be kept private
|
||||
to the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
|
||||
When creating multipart formposts. The file name part can be encoded with
|
||||
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
|
||||
|
||||
52. Gautam Kachroo's issue that identifies a problem with the multi interface
|
||||
where a connection can be re-used without actually being properly
|
||||
SSL-negotiated:
|
||||
http://curl.haxx.se/mail/lib-2008-01/0277.html
|
||||
1.5 Expect-100 meets 417
|
||||
|
||||
49. If using --retry and the transfer timeouts (possibly due to using -m or
|
||||
-y/-Y) the next attempt doesn't resume the transfer properly from what was
|
||||
downloaded in the previous attempt but will truncate and restart at the
|
||||
original position where it was at before the previous failed attempt. See
|
||||
http://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
|
||||
https://qa.mandriva.com/show_bug.cgi?id=22565
|
||||
If an upload using Expect: 100-continue receives an HTTP 417 response, it
|
||||
ought to be automatically resent without the Expect:. A workaround is for
|
||||
the client application to redo the transfer after disabling Expect:.
|
||||
https://curl.haxx.se/mail/archive-2008-02/0043.html
|
||||
|
||||
48. If a CONNECT response-headers are larger than BUFSIZE (16KB) when the
|
||||
connection is meant to be kept alive (like for NTLM proxy auth), the
|
||||
function will return prematurely and will confuse the rest of the HTTP
|
||||
protocol code. This should be very rare.
|
||||
1.6 Unnecessary close when 401 received waiting for 100
|
||||
|
||||
43. There seems to be a problem when connecting to the Microsoft telnet server.
|
||||
http://curl.haxx.se/bug/view.cgi?id=649
|
||||
libcurl closes the connection if an HTTP 401 reply is received while it is
|
||||
waiting for the the 100-continue response.
|
||||
https://curl.haxx.se/mail/lib-2008-08/0462.html
|
||||
|
||||
41. When doing an operation over FTP that requires the ACCT command (but not
|
||||
when logging in), the operation will fail since libcurl doesn't detect this
|
||||
and thus fails to issue the correct command:
|
||||
http://curl.haxx.se/bug/view.cgi?id=635
|
||||
1.7 Deflate error after all content was received
|
||||
|
||||
39. Steffen Rumler's Race Condition in Curl_proxyCONNECT:
|
||||
http://curl.haxx.se/mail/lib-2007-01/0045.html
|
||||
There's a situation where we can get an error in a HTTP response that is
|
||||
compressed, when that error is detected after all the actual body contents
|
||||
have been received and delivered to the appliction. This is tricky, but is
|
||||
ultimately a broken server.
|
||||
|
||||
38. Kumar Swamy Bhatt's problem in ftp/ssl "LIST" operation:
|
||||
http://curl.haxx.se/mail/lib-2007-01/0103.html
|
||||
See https://github.com/curl/curl/issues/2719
|
||||
|
||||
35. Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very
|
||||
bad when used with the multi interface.
|
||||
1.9 HTTP/2 frames while in the connection pool kill reuse
|
||||
|
||||
34. The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
|
||||
Also see #12. According to bug #1556528, even the SOCKS5 connect code does
|
||||
not do it right: http://curl.haxx.se/bug/view.cgi?id=604
|
||||
If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
|
||||
curl while the connection is held in curl's connection pool, the socket will
|
||||
be found readable when considered for reuse and that makes curl think it is
|
||||
dead and then it will be closed and a new connection gets created instead.
|
||||
|
||||
31. "curl-config --libs" will include details set in LDFLAGS when configure is
|
||||
run that might be needed only for building libcurl. Further, curl-config
|
||||
--cflags suffers from the same effects with CFLAGS/CPPFLAGS.
|
||||
This is *best* fixed by adding monitoring to connections while they are kept
|
||||
in the pool so that pings can be responded to appropriately.
|
||||
|
||||
26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
|
||||
"system context" will make it use wrong(?) user name - at least when compared
|
||||
to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=535
|
||||
1.10 Strips trailing dot from host name
|
||||
|
||||
23. SOCKS-related problems:
|
||||
B) libcurl doesn't support FTPS over a SOCKS proxy.
|
||||
E) libcurl doesn't support active FTP over a SOCKS proxy
|
||||
When given a URL with a trailing dot for the host name part:
|
||||
"https://example.com./", libcurl will strip off the dot and use the name
|
||||
without a dot internally and send it dot-less in HTTP Host: headers and in
|
||||
the TLS SNI field. For the purpose of resolving the name to an address
|
||||
the hostname is used as is without any change.
|
||||
|
||||
We probably have even more bugs and lack of features when a SOCKS proxy is
|
||||
used.
|
||||
The HTTP part violates RFC 7230 section 5.4 but the SNI part is accordance
|
||||
with RFC 6066 section 3.
|
||||
|
||||
21. FTP ASCII transfers do not follow RFC959. They don't convert the data
|
||||
accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
|
||||
clearly describes how this should be done:
|
||||
URLs using these trailing dots are very rare in the wild and we have not seen
|
||||
or gotten any real-world problems with such URLs reported. The popular
|
||||
browsers seem to have stayed with not stripping the dot for both uses (thus
|
||||
they violate RFC 6066 instead of RFC 7230).
|
||||
|
||||
The sender converts the data from an internal character representation to
|
||||
the standard 8-bit NVT-ASCII representation (see the Telnet
|
||||
specification). The receiver will convert the data from the standard
|
||||
form to his own internal form.
|
||||
Daniel took the discussion to the HTTPbis mailing list in March 2016:
|
||||
https://lists.w3.org/Archives/Public/ietf-http-wg/2016JanMar/0430.html but
|
||||
there was not major rush or interest to fix this. The impression I get is
|
||||
that most HTTP people rather not rock the boat now and instead prioritize web
|
||||
compatibility rather than to strictly adhere to these RFCs.
|
||||
|
||||
Since 7.15.4 at least line endings are converted.
|
||||
Our current approach allows a knowing client to send a custom HTTP header
|
||||
with the dot added.
|
||||
|
||||
16. FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
|
||||
<password>, and <fpath> components, encoded as "%00". The problem is that
|
||||
curl_unescape does not detect this, but instead returns a shortened C
|
||||
string. From a strict FTP protocol standpoint, NUL is a valid character
|
||||
within RFC 959 <string>, so the way to handle this correctly in curl would
|
||||
be to use a data structure other than a plain C string, one that can handle
|
||||
embedded NUL characters. From a practical standpoint, most FTP servers
|
||||
would not meaningfully support NUL characters within RFC 959 <string>,
|
||||
anyway (e.g., Unix pathnames may not contain NUL).
|
||||
In a few cases there is a difference in name resolving to IP addresses with
|
||||
a trailing dot, but it can be noted that many HTTP servers will not happily
|
||||
accept the trailing dot there unless that has been specifically configured
|
||||
to be a fine virtual host.
|
||||
|
||||
14. Test case 165 might fail on a system which has libidn present, but with an
|
||||
old iconv version (2.1.3 is a known bad version), since it doesn't recognize
|
||||
the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
|
||||
test pass, but instead makes it fail on Solaris hosts that use its native
|
||||
iconv.
|
||||
If URLs with trailing dots for host names become more popular or even just
|
||||
used more than for just plain fun experiments, I'm sure we will have reason
|
||||
to go back and reconsider.
|
||||
|
||||
13. curl version 7.12.2 fails on AIX if compiled with --enable-ares.
|
||||
The workaround is to combine --enable-ares with --disable-shared
|
||||
See https://github.com/curl/curl/issues/716 for the discussion.
|
||||
|
||||
12. When connecting to a SOCKS proxy, the (connect) timeout is not properly
|
||||
acknowledged after the actual TCP connect (during the SOCKS "negotiate"
|
||||
phase).
|
||||
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
|
||||
|
||||
10. To get HTTP Negotiate (SPNEGO) authentication to work fine, you need to
|
||||
provide a (fake) user name (this concerns both curl and the lib) because the
|
||||
code wrongly only considers authentication if there's a user name provided.
|
||||
http://curl.haxx.se/bug/view.cgi?id=440 How?
|
||||
http://curl.haxx.se/mail/lib-2004-08/0182.html
|
||||
I'm using libcurl to POST form data using a FILE* with the CURLFORM_STREAM
|
||||
option of curl_formadd(). I've 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 isn't 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 didn't
|
||||
seem to fix the issue or even get called. See
|
||||
https://github.com/curl/curl/issues/768
|
||||
|
||||
8. Doing resumed upload over HTTP does not work with '-C -', because curl
|
||||
doesn't do a HEAD first to get the initial size. This needs to be done
|
||||
manually for HTTP PUT resume to work, and then '-C [index]'.
|
||||
|
||||
6. libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
|
||||
such parts should be sent to the server as 'CWD ' (without an argument).
|
||||
The only exception to this rule, is that we knowingly break this if the
|
||||
empty part is first in the path, as then we use the double slashes to
|
||||
indicate that the user wants to reach the root dir (this exception SHALL
|
||||
remain even when this bug is fixed).
|
||||
2. TLS
|
||||
|
||||
5. libcurl doesn't treat the content-length of compressed data properly, as
|
||||
it seems HTTP servers send the *uncompressed* length in that header and
|
||||
libcurl thinks of it as the *compressed* length. Some explanations are here:
|
||||
http://curl.haxx.se/mail/lib-2003-06/0146.html
|
||||
2.1 CURLINFO_SSL_VERIFYRESULT has limited support
|
||||
|
||||
2. If a HTTP server responds to a HEAD request and includes a body (thus
|
||||
violating the RFC2616), curl won't wait to read the response but just stop
|
||||
reading and return back. If a second request (let's assume a GET) is then
|
||||
immediately made to the same server again, the connection will be re-used
|
||||
fine of course, and the second request will be sent off but when the
|
||||
response is to get read, the previous response-body is what curl will read
|
||||
and havoc is what happens.
|
||||
More details on this is found in this libcurl mailing list thread:
|
||||
http://curl.haxx.se/mail/lib-2002-08/0000.html
|
||||
CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
|
||||
backends, so relying on this information in a generic app is flaky.
|
||||
|
||||
2.2 DER in keychain
|
||||
|
||||
Curl doesn't recognize certificates in DER format in keychain, but it works
|
||||
with PEM. https://curl.haxx.se/bug/view.cgi?id=1065
|
||||
|
||||
2.3 GnuTLS backend skips really long certificate fields
|
||||
|
||||
libcurl calls gnutls_x509_crt_get_dn() with a fixed buffer size and if the
|
||||
field is too long in the cert, it'll just return an error and the field will
|
||||
be displayed blank.
|
||||
|
||||
2.4 DarwinSSL won't import PKCS#12 client certificates without a password
|
||||
|
||||
libcurl calls SecPKCS12Import with the PKCS#12 client certificate, but that
|
||||
function rejects certificates that do not have a password.
|
||||
https://github.com/curl/curl/issues/1308
|
||||
|
||||
2.5 Client cert handling with Issuer DN differs between backends
|
||||
|
||||
When the specified client certificate doesn't match any of the
|
||||
server-specified DNs, the OpenSSL and GnuTLS backends behave differently.
|
||||
The github discussion may contain a solution.
|
||||
|
||||
See https://github.com/curl/curl/issues/1411
|
||||
|
||||
2.6 CURL_GLOBAL_SSL
|
||||
|
||||
Since libcurl 7.57.0, the flag CURL_GLOBAL_SSL is a no-op. The change was
|
||||
merged in https://github.com/curl/curl/commit/d661b0afb571a
|
||||
|
||||
It was removed since it was
|
||||
|
||||
A) never clear for applications on how to deal with init in the light of
|
||||
different SSL backends (the option was added back in the days when life
|
||||
was simpler)
|
||||
|
||||
B) multissl introduced dynamic switching between SSL backends which
|
||||
emphasized (A) even more
|
||||
|
||||
C) libcurl uses some TLS backend functionality even for non-TLS functions (to
|
||||
get "good" random) so applications trying to avoid the init for
|
||||
performance reasons would do wrong anyway
|
||||
|
||||
D) never very carefully documented so all this mostly just happened to work
|
||||
for some users
|
||||
|
||||
However, in spite of the problems with the feature, there were some users who
|
||||
apparently depended on this feature and who now claim libcurl is broken for
|
||||
them. The fix for this situation is not obvious as a downright revert of the
|
||||
patch is totally ruled out due to those reasons above.
|
||||
|
||||
https://github.com/curl/curl/issues/2276
|
||||
|
||||
2.7 Client cert (MTLS) issues with Schannel
|
||||
|
||||
See https://github.com/curl/curl/issues/3145
|
||||
|
||||
|
||||
3. Email protocols
|
||||
|
||||
3.1 IMAP SEARCH ALL truncated response
|
||||
|
||||
IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the
|
||||
code reveals that pingpong.c contains some truncation code, at line 408, when
|
||||
it deems the server response to be too large truncating it to 40 characters"
|
||||
https://curl.haxx.se/bug/view.cgi?id=1366
|
||||
|
||||
3.2 No disconnect command
|
||||
|
||||
The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
|
||||
SMTP if a failure occurs during the authentication phase of a connection.
|
||||
|
||||
3.3 SMTP to multiple recipients
|
||||
|
||||
When sending data to multiple recipients, curl will abort and return failure
|
||||
if one of the recipients indicate failure (on the "RCPT TO"
|
||||
command). Ordinary mail programs would proceed and still send to the ones
|
||||
that can receive data. This is subject for change in the future.
|
||||
https://curl.haxx.se/bug/view.cgi?id=1116
|
||||
|
||||
3.4 POP3 expects "CRLF.CRLF" eob for some single-line responses
|
||||
|
||||
You have to tell libcurl not to expect a body, when dealing with one line
|
||||
response commands. Please see the POP3 examples and test cases which show
|
||||
this for the NOOP and DELE commands. https://curl.haxx.se/bug/?i=740
|
||||
|
||||
|
||||
4. Command line
|
||||
|
||||
4.1 -J and -O with %-encoded file names
|
||||
|
||||
-J/--remote-header-name doesn't decode %-encoded file names. RFC6266 details
|
||||
how it should be done. The can of worm is basically that we have no charset
|
||||
handling in curl and ascii >=128 is a challenge for us. Not to mention that
|
||||
decoding also means that we need to check for nastiness that is attempted,
|
||||
like "../" sequences and the like. Probably everything to the left of any
|
||||
embedded slashes should be cut off.
|
||||
https://curl.haxx.se/bug/view.cgi?id=1294
|
||||
|
||||
-O also doesn't decode %-encoded names, and while it has even less
|
||||
information about the charset involved the process is similar to the -J case.
|
||||
|
||||
Note that we won't add decoding to -O without the user asking for it with
|
||||
some other means as well, since -O has always been documented to use the name
|
||||
exactly as specified in the URL.
|
||||
|
||||
4.2 -J with -C - fails
|
||||
|
||||
When using -J (with -O), automatically resumed downloading together with "-C
|
||||
-" fails. Without -J the same command line works! This happens because the
|
||||
resume logic is worked out before the target file name (and thus its
|
||||
pre-transfer size) has been figured out!
|
||||
https://curl.haxx.se/bug/view.cgi?id=1169
|
||||
|
||||
4.3 --retry and transfer timeouts
|
||||
|
||||
If using --retry and the transfer timeouts (possibly due to using -m or
|
||||
-y/-Y) the next attempt doesn't resume the transfer properly from what was
|
||||
downloaded in the previous attempt but will truncate and restart at the
|
||||
original position where it was at before the previous failed attempt. See
|
||||
https://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
|
||||
https://qa.mandriva.com/show_bug.cgi?id=22565
|
||||
|
||||
4.4 --upload-file . hangs if delay in STDIN
|
||||
|
||||
"(echo start; sleep 1; echo end) | curl --upload-file . http://mywebsite -vv"
|
||||
|
||||
... causes a hang when it shouldn't.
|
||||
|
||||
See https://github.com/curl/curl/issues/2051
|
||||
|
||||
4.5 Improve --data-urlencode space encoding
|
||||
|
||||
ASCII space characters in --data-urlencode are currently encoded as %20
|
||||
rather than +, which RFC 1866 says should be used.
|
||||
|
||||
See https://github.com/curl/curl/issues/3229
|
||||
|
||||
5. Build and portability issues
|
||||
|
||||
5.1 tests not compatible with python3
|
||||
|
||||
The smb test server still needs python2.
|
||||
|
||||
See https://github.com/curl/curl/issues/3289
|
||||
|
||||
5.2 curl-config --libs contains private details
|
||||
|
||||
"curl-config --libs" will include details set in LDFLAGS when configure is
|
||||
run that might be needed only for building libcurl. Further, curl-config
|
||||
--cflags suffers from the same effects with CFLAGS/CPPFLAGS.
|
||||
|
||||
5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
|
||||
|
||||
See https://github.com/curl/curl/issues/2905
|
||||
|
||||
5.4 Cannot compile against a static build of OpenLDAP
|
||||
|
||||
See https://github.com/curl/curl/issues/2367
|
||||
|
||||
5.5 can't handle Unicode arguments in Windows
|
||||
|
||||
If a URL or filename can't be encoded using the user's current codepage then
|
||||
it can only be encoded properly in the Unicode character set. Windows uses
|
||||
UTF-16 encoding for Unicode and stores it in wide characters, however curl
|
||||
and libcurl are not equipped for that at the moment. And, except for Cygwin,
|
||||
Windows can't use UTF-8 as a locale.
|
||||
|
||||
https://curl.haxx.se/bug/?i=345
|
||||
https://curl.haxx.se/bug/?i=731
|
||||
|
||||
5.6 cmake support gaps
|
||||
|
||||
The cmake build setup lacks several features that the autoconf build
|
||||
offers. This includes:
|
||||
|
||||
- use of correct soname for the shared library build
|
||||
|
||||
- support for several TLS backends are missing
|
||||
|
||||
- the unit tests cause link failures in regular non-static builds
|
||||
|
||||
- no nghttp2 check
|
||||
|
||||
- unusable tool_hugehelp.c with MinGW, see
|
||||
https://github.com/curl/curl/issues/3125
|
||||
|
||||
5.7 Visual Studio project gaps
|
||||
|
||||
The Visual Studio projects lack some features that the autoconf and nmake
|
||||
builds offer, such as the following:
|
||||
|
||||
- support for zlib and nghttp2
|
||||
- use of static runtime libraries
|
||||
- add the test suite components
|
||||
|
||||
In addition to this the following could be implemented:
|
||||
|
||||
- support for other development IDEs
|
||||
- add PATH environment variables for third-party DLLs
|
||||
|
||||
5.8 configure finding libs in wrong directory
|
||||
|
||||
When the configure script checks for third-party libraries, it adds those
|
||||
directories to the LDFLAGS variable and then tries linking to see if it
|
||||
works. When successful, the found directory is kept in the LDFLAGS variable
|
||||
when the script continues to execute and do more tests and possibly check for
|
||||
more libraries.
|
||||
|
||||
This can make subsequent checks for libraries wrongly detect another
|
||||
installation in a directory that was previously added to LDFLAGS by another
|
||||
library check!
|
||||
|
||||
A possibly better way to do these checks would be to keep the pristine LDFLAGS
|
||||
even after successful checks and instead add those verified paths to a
|
||||
separate variable that only after all library checks have been performed gets
|
||||
appended to LDFLAGS.
|
||||
|
||||
5.9 Utilize Requires.private directives in libcurl.pc
|
||||
|
||||
https://github.com/curl/curl/issues/864
|
||||
|
||||
6. Authentication
|
||||
|
||||
6.1 NTLM authentication and unicode
|
||||
|
||||
NTLM authentication involving unicode user name or password only works
|
||||
properly if built with UNICODE defined together with the WinSSL/Schannel
|
||||
backend. The original problem was mentioned in:
|
||||
https://curl.haxx.se/mail/lib-2009-10/0024.html
|
||||
https://curl.haxx.se/bug/view.cgi?id=896
|
||||
|
||||
The WinSSL/Schannel version verified to work as mentioned in
|
||||
https://curl.haxx.se/mail/lib-2012-07/0073.html
|
||||
|
||||
6.2 MIT Kerberos for Windows build
|
||||
|
||||
libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
||||
library header files exporting symbols/macros that should be kept private to
|
||||
the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/
|
||||
|
||||
6.3 NTLM in system context uses wrong name
|
||||
|
||||
NTLM authentication using SSPI (on Windows) when (lib)curl is running in
|
||||
"system context" will make it use wrong(?) user name - at least when compared
|
||||
to what winhttp does. See https://curl.haxx.se/bug/view.cgi?id=535
|
||||
|
||||
6.4 Negotiate and Kerberos V5 need a fake user name
|
||||
|
||||
In order to get Negotiate (SPNEGO) authentication to work in HTTP or Kerberos
|
||||
V5 in the e-mail protocols, you need to provide a (fake) user name (this
|
||||
concerns both curl and the lib) because the code wrongly only considers
|
||||
authentication if there's a user name provided by setting
|
||||
conn->bits.user_passwd in url.c https://curl.haxx.se/bug/view.cgi?id=440 How?
|
||||
https://curl.haxx.se/mail/lib-2004-08/0182.html A possible solution is to
|
||||
either modify this variable to be set or introduce a variable such as
|
||||
new conn->bits.want_authentication which is set when any of the authentication
|
||||
options are set.
|
||||
|
||||
6.5 NTLM doesn't support password with § character
|
||||
|
||||
https://github.com/curl/curl/issues/2120
|
||||
|
||||
6.6 libcurl can fail to try alternatives with --proxy-any
|
||||
|
||||
When connecting via a proxy using --proxy-any, a failure to establish an
|
||||
authentication will cause libcurl to abort trying other options if the
|
||||
failed method has a higher preference than the alternatives. As an example,
|
||||
--proxy-any against a proxy which advertise Negotiate and NTLM, but which
|
||||
fails to set up Kerberos authentication won't proceed to try authentication
|
||||
using NTLM.
|
||||
|
||||
https://github.com/curl/curl/issues/876
|
||||
|
||||
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
|
||||
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
|
||||
people. Brought up (and is being misunderstood) in:
|
||||
https://curl.haxx.se/bug/view.cgi?id=856
|
||||
|
||||
7.2 FTP with CONNECT and slow server
|
||||
|
||||
When doing FTP over a socks proxy or CONNECT through HTTP proxy and the multi
|
||||
interface is used, libcurl will fail if the (passive) TCP connection for the
|
||||
data transfer isn't more or less instant as the code does not properly wait
|
||||
for the connect to be confirmed. See test case 564 for a first shot at a test
|
||||
case.
|
||||
|
||||
7.3 FTP with NOBODY and FAILONERROR
|
||||
|
||||
It seems sensible to be able to use CURLOPT_NOBODY and CURLOPT_FAILONERROR
|
||||
with FTP to detect if a file exists or not, but it is not working:
|
||||
https://curl.haxx.se/mail/lib-2008-07/0295.html
|
||||
|
||||
7.4 FTP with ACCT
|
||||
|
||||
When doing an operation over FTP that requires the ACCT command (but not when
|
||||
logging in), the operation will fail since libcurl doesn't detect this and
|
||||
thus fails to issue the correct command:
|
||||
https://curl.haxx.se/bug/view.cgi?id=635
|
||||
|
||||
7.5 ASCII FTP
|
||||
|
||||
FTP ASCII transfers do not follow RFC959. They don't convert the data
|
||||
accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
|
||||
clearly describes how this should be done:
|
||||
|
||||
The sender converts the data from an internal character representation to
|
||||
the standard 8-bit NVT-ASCII representation (see the Telnet
|
||||
specification). The receiver will convert the data from the standard
|
||||
form to his own internal form.
|
||||
|
||||
Since 7.15.4 at least line endings are converted.
|
||||
|
||||
7.6 FTP with NULs in URL parts
|
||||
|
||||
FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
|
||||
<password>, and <fpath> components, encoded as "%00". The problem is that
|
||||
curl_unescape does not detect this, but instead returns a shortened C string.
|
||||
From a strict FTP protocol standpoint, NUL is a valid character within RFC
|
||||
959 <string>, so the way to handle this correctly in curl would be to use a
|
||||
data structure other than a plain C string, one that can handle embedded NUL
|
||||
characters. From a practical standpoint, most FTP servers would not
|
||||
meaningfully support NUL characters within RFC 959 <string>, anyway (e.g.,
|
||||
Unix pathnames may not contain NUL).
|
||||
|
||||
7.7 FTP and empty path parts in the URL
|
||||
|
||||
libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
|
||||
such parts should be sent to the server as 'CWD ' (without an argument). The
|
||||
only exception to this rule, is that we knowingly break this if the empty
|
||||
part is first in the path, as then we use the double slashes to indicate that
|
||||
the user wants to reach the root dir (this exception SHALL remain even when
|
||||
this bug is fixed).
|
||||
|
||||
7.8 Premature transfer end but healthy control channel
|
||||
|
||||
When 'multi_done' is called before the transfer has been completed the normal
|
||||
way, it is considered a "premature" transfer end. In this situation, libcurl
|
||||
closes the connection assuming it doesn't know the state of the connection so
|
||||
it can't be reused for subsequent requests.
|
||||
|
||||
With FTP however, this isn't necessarily true but there are a bunch of
|
||||
situations (listed in the ftp_done code) where it *could* keep the connection
|
||||
alive even in this situation - but the current code doesn't. Fixing this would
|
||||
allow libcurl to reuse FTP connections better.
|
||||
|
||||
7.9 Passive transfer tries only one IP address
|
||||
|
||||
When doing FTP operations through a proxy at localhost, the reported spotted
|
||||
that curl only tried to connect once to the proxy, while it had multiple
|
||||
addresses and a failed connect on one address should make it try the next.
|
||||
|
||||
After switching to passive mode (EPSV), curl should try all IP addresses for
|
||||
"localhost". Currently it tries ::1, but it should also try 127.0.0.1.
|
||||
|
||||
See https://github.com/curl/curl/issues/1508
|
||||
|
||||
7.10 Stick to same family over SOCKS proxy
|
||||
|
||||
When asked to do FTP over a SOCKS proxy, it might connect to the proxy (and
|
||||
then subsequently to the remote server) using for example IPv4. When doing
|
||||
the second connection, curl should make sure that the second connection is
|
||||
using the same IP protocol version as the first connection did and not try
|
||||
others, since the remote server will only accept the same.
|
||||
|
||||
See https://curl.haxx.se/mail/archive-2018-07/0000.html
|
||||
|
||||
8. TELNET
|
||||
|
||||
8.1 TELNET and time limitations don't work
|
||||
|
||||
When using telnet, the time limitation options don't work.
|
||||
https://curl.haxx.se/bug/view.cgi?id=846
|
||||
|
||||
8.2 Microsoft telnet server
|
||||
|
||||
There seems to be a problem when connecting to the Microsoft telnet server.
|
||||
https://curl.haxx.se/bug/view.cgi?id=649
|
||||
|
||||
|
||||
9. SFTP and SCP
|
||||
|
||||
9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
|
||||
|
||||
When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP server
|
||||
using the multi interface, the commands are not being sent correctly and
|
||||
instead the connection is "cancelled" (the operation is considered done)
|
||||
prematurely. There is a half-baked (busy-looping) patch provided in the bug
|
||||
report but it cannot be accepted as-is. See
|
||||
https://curl.haxx.se/bug/view.cgi?id=748
|
||||
|
||||
|
||||
10. SOCKS
|
||||
|
||||
10.1 SOCKS proxy connections are done blocking
|
||||
|
||||
Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very bad
|
||||
when used with the multi interface.
|
||||
|
||||
10.2 SOCKS don't support timeouts
|
||||
|
||||
The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
|
||||
According to bug #1556528, even the SOCKS5 connect code does not do it right:
|
||||
https://curl.haxx.se/bug/view.cgi?id=604
|
||||
|
||||
When connecting to a SOCK proxy, the (connect) timeout is not properly
|
||||
acknowledged after the actual TCP connect (during the SOCKS "negotiate"
|
||||
phase).
|
||||
|
||||
10.3 FTPS over SOCKS
|
||||
|
||||
libcurl doesn't support FTPS over a SOCKS proxy.
|
||||
|
||||
10.4 active FTP over a SOCKS
|
||||
|
||||
libcurl doesn't support active FTP over a SOCKS proxy
|
||||
|
||||
|
||||
11. Internals
|
||||
|
||||
11.1 Curl leaks .onion hostnames in DNS
|
||||
|
||||
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
|
||||
|
||||
Issue: https://github.com/curl/curl/issues/543
|
||||
|
||||
11.2 error buffer not set if connection to multiple addresses fails
|
||||
|
||||
If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
|
||||
only. But you only have IPv4 connectivity. libcurl will correctly fail with
|
||||
CURLE_COULDNT_CONNECT. But the error buffer set by CURLOPT_ERRORBUFFER
|
||||
remains empty. Issue: https://github.com/curl/curl/issues/544
|
||||
|
||||
11.3 c-ares deviates from stock resolver on http://1346569778
|
||||
|
||||
When using the socket resolvers, that URL becomes:
|
||||
|
||||
* Rebuilt URL to: http://1346569778/
|
||||
* Trying 80.67.6.50...
|
||||
|
||||
but with c-ares it instead says "Could not resolve: 1346569778 (Domain name
|
||||
not found)"
|
||||
|
||||
See https://github.com/curl/curl/issues/893
|
||||
|
||||
11.4 HTTP test server 'connection-monitor' problems
|
||||
|
||||
The 'connection-monitor' feature of the sws HTTP test server doesn't work
|
||||
properly if some tests are run in unexpected order. Like 1509 and then 1525.
|
||||
|
||||
See https://github.com/curl/curl/issues/868
|
||||
|
||||
11.5 Connection information when using TCP Fast Open
|
||||
|
||||
CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
|
||||
enabled.
|
||||
|
||||
See https://github.com/curl/curl/issues/1332
|
||||
|
||||
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're 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
|
||||
|
||||
12. LDAP and OpenLDAP
|
||||
|
||||
12.1 OpenLDAP hangs after returning results
|
||||
|
||||
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
|
||||
data from them.
|
||||
|
||||
As a temporary workaround, disable referrals chasing by configuration.
|
||||
|
||||
The fix is not easy: proper automatic referrals chasing requires a
|
||||
synchronous bind callback and monitoring an arbitrary number of socket
|
||||
descriptors for a single easy handle (currently limited to 5).
|
||||
|
||||
Generic LDAP is synchronous: OK.
|
||||
|
||||
See https://github.com/curl/curl/issues/622 and
|
||||
https://curl.haxx.se/mail/lib-2016-01/0101.html
|
||||
|
||||
|
||||
13. TCP/IP
|
||||
|
||||
13.1 --interface for ipv6 binds to unusable IP address
|
||||
|
||||
Since IPv6 provides a lot of addresses with different scope, binding to an
|
||||
IPv6 address needs to take the proper care so that it doesn't bind to a
|
||||
locally scoped address as that is bound to fail.
|
||||
|
||||
https://github.com/curl/curl/issues/686
|
||||
|
||||
14. DICT
|
||||
|
||||
14.1 DICT responses show the underlying protocol
|
||||
|
||||
When getting a DICT response, the protocol parts of DICT aren't stripped off
|
||||
from the output.
|
||||
|
||||
https://github.com/curl/curl/issues/1809
|
||||
|
@ -1,130 +0,0 @@
|
||||
License Mixing with apps, libcurl and Third Party Libraries
|
||||
===========================================================
|
||||
|
||||
libcurl can be built to use a fair amount of various third party libraries,
|
||||
libraries that are written and provided by other parties that are distributed
|
||||
using their own licenses. Even libcurl itself contains code that may cause
|
||||
problems to some. This document attempts to describe what licenses libcurl and
|
||||
the other libraries use and what possible dilemmas linking and mixing them all
|
||||
can lead to for end users.
|
||||
|
||||
I am not a lawyer and this is not legal advice!
|
||||
|
||||
One common dilemma is that GPL[1]-licensed code is not allowed to be linked
|
||||
with code licensed under the Original BSD license (with the announcement
|
||||
clause). You may still build your own copies that use them all, but
|
||||
distributing them as binaries would be to violate the GPL license - unless you
|
||||
accompany your license with an exception[2]. This particular problem was
|
||||
addressed when the Modified BSD license was created, which does not have the
|
||||
announcement clause that collides with GPL.
|
||||
|
||||
libcurl http://curl.haxx.se/docs/copyright.html
|
||||
|
||||
Uses an MIT (or Modified BSD)-style license that is as liberal as
|
||||
possible.
|
||||
|
||||
OpenSSL https://www.openssl.org/source/license.html
|
||||
|
||||
(May be used for SSL/TLS support) Uses an Original BSD-style license
|
||||
with an announcement clause that makes it "incompatible" with GPL. You
|
||||
are not allowed to ship binaries that link with OpenSSL that includes
|
||||
GPL code (unless that specific GPL code includes an exception for
|
||||
OpenSSL - a habit that is growing more and more common). If OpenSSL's
|
||||
licensing is a problem for you, consider using another TLS library.
|
||||
|
||||
GnuTLS http://www.gnutls.org/
|
||||
|
||||
(May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
|
||||
a problem for you, consider using another TLS library. Also note that
|
||||
GnuTLS itself depends on and uses other libs (libgcrypt and
|
||||
libgpg-error) and they too are LGPL- or GPL-licensed.
|
||||
|
||||
WolfSSL https://www.wolfssl.com/
|
||||
|
||||
(May be used for SSL/TLS support) Uses the GPL[1] license or a
|
||||
propietary license. If this is a problem for you, consider using
|
||||
another TLS library.
|
||||
|
||||
NSS https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
|
||||
|
||||
(May be used for SSL/TLS support) Is covered by the MPL[4] license,
|
||||
the GPL[1] license and the LGPL[3] license. You may choose to license
|
||||
the code under MPL terms, GPL terms, or LGPL terms. These licenses
|
||||
grant you different permissions and impose different obligations. You
|
||||
should select the license that best meets your needs.
|
||||
|
||||
axTLS http://axtls.sourceforge.net/
|
||||
|
||||
(May be used for SSL/TLS support) Uses a Modified BSD-style license.
|
||||
|
||||
mbedTLS https://tls.mbed.org/
|
||||
|
||||
(May be used for SSL/TLS support) Uses the GPL[1] license or a
|
||||
propietary license. If this is a problem for you, consider using
|
||||
another TLS library.
|
||||
|
||||
BoringSSL https://boringssl.googlesource.com/
|
||||
|
||||
(May be used for SSL/TLS support) As an OpenSSL fork, it has the same
|
||||
license as that.
|
||||
|
||||
libressl http://www.libressl.org/
|
||||
|
||||
(May be used for SSL/TLS support) As an OpenSSL fork, it has the same
|
||||
license as that.
|
||||
|
||||
c-ares http://daniel.haxx.se/projects/c-ares/license.html
|
||||
|
||||
(Used for asynchronous name resolves) Uses an MIT license that is very
|
||||
liberal and imposes no restrictions on any other library or part you
|
||||
may link with.
|
||||
|
||||
zlib http://www.zlib.net/zlib_license.html
|
||||
|
||||
(Used for compressed Transfer-Encoding support) Uses an MIT-style
|
||||
license that shouldn't collide with any other library.
|
||||
|
||||
MIT Kerberos http://web.mit.edu/kerberos/www/dist/
|
||||
|
||||
(May be used for GSS support) MIT licensed, that shouldn't collide
|
||||
with any other parts.
|
||||
|
||||
Heimdal http://www.h5l.org
|
||||
|
||||
(May be used for GSS support) Heimdal is Original BSD licensed with
|
||||
the announcement clause.
|
||||
|
||||
GNU GSS https://www.gnu.org/software/gss/
|
||||
|
||||
(May be used for GSS support) GNU GSS is GPL licensed. Note that you
|
||||
may not distribute binary curl packages that uses this if you build
|
||||
curl to also link and use any Original BSD licensed libraries!
|
||||
|
||||
libidn http://josefsson.org/libidn/
|
||||
|
||||
(Used for IDNA support) Uses the GNU Lesser General Public
|
||||
License [3]. LGPL is a variation of GPL with slightly less aggressive
|
||||
"copyleft". This license requires more requirements to be met when
|
||||
distributing binaries, see the license for details. Also note that if
|
||||
you distribute a binary that includes this library, you must also
|
||||
include the full LGPL license text. Please properly point out what
|
||||
parts of the distributed package that the license addresses.
|
||||
|
||||
OpenLDAP http://www.openldap.org/software/release/license.html
|
||||
|
||||
(Used for LDAP support) Uses a Modified BSD-style license. Since
|
||||
libcurl uses OpenLDAP as a shared library only, I have not heard of
|
||||
anyone that ships OpenLDAP linked with libcurl in an app.
|
||||
|
||||
libssh2 http://www.libssh2.org/
|
||||
|
||||
(Used for scp and sftp support) libssh2 uses a Modified BSD-style
|
||||
license.
|
||||
|
||||
[1] = GPL - GNU General Public License: https://www.gnu.org/licenses/gpl.html
|
||||
[2] = https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
|
||||
how to write such an exception to the GPL
|
||||
[3] = LGPL - GNU Lesser General Public License:
|
||||
https://www.gnu.org/licenses/lgpl.html
|
||||
[4] = MPL - Mozilla Public License:
|
||||
https://www.mozilla.org/MPL/
|
123
curl/docs/LICENSE-MIXING.md
Normal file
123
curl/docs/LICENSE-MIXING.md
Normal file
@ -0,0 +1,123 @@
|
||||
License Mixing
|
||||
==============
|
||||
|
||||
libcurl can be built to use a fair amount of various third party libraries,
|
||||
libraries that are written and provided by other parties that are distributed
|
||||
using their own licenses. Even libcurl itself contains code that may cause
|
||||
problems to some. This document attempts to describe what licenses libcurl and
|
||||
the other libraries use and what possible dilemmas linking and mixing them all
|
||||
can lead to for end users.
|
||||
|
||||
I am not a lawyer and this is not legal advice!
|
||||
|
||||
One common dilemma is that [GPL](https://www.gnu.org/licenses/gpl.html)
|
||||
licensed code is not allowed to be linked with code licensed under the
|
||||
[Original BSD license](https://spdx.org/licenses/BSD-4-Clause.html) (with the
|
||||
announcement clause). You may still build your own copies that use them all,
|
||||
but distributing them as binaries would be to violate the GPL license - unless
|
||||
you accompany your license with an
|
||||
[exception](https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs). This
|
||||
particular problem was addressed when the [Modified BSD
|
||||
license](https://opensource.org/licenses/BSD-3-Clause) was created, which does
|
||||
not have the announcement clause that collides with GPL.
|
||||
|
||||
## libcurl
|
||||
|
||||
Uses an [MIT style license](https://curl.haxx.se/docs/copyright.html) that is
|
||||
very liberal.
|
||||
|
||||
## OpenSSL
|
||||
|
||||
(May be used for SSL/TLS support) Uses an Original BSD-style license with an
|
||||
announcement clause that makes it "incompatible" with GPL. You are not
|
||||
allowed to ship binaries that link with OpenSSL that includes GPL code
|
||||
(unless that specific GPL code includes an exception for OpenSSL - a habit
|
||||
that is growing more and more common). If OpenSSL's licensing is a problem
|
||||
for you, consider using another TLS library.
|
||||
|
||||
## GnuTLS
|
||||
|
||||
(May be used for SSL/TLS support) Uses the
|
||||
[LGPL](https://www.gnu.org/licenses/lgpl.html) license. If this is a problem
|
||||
for you, consider using another TLS library. Also note that GnuTLS itself
|
||||
depends on and uses other libs (libgcrypt and libgpg-error) and they too are
|
||||
LGPL- or GPL-licensed.
|
||||
|
||||
## WolfSSL
|
||||
|
||||
(May be used for SSL/TLS support) Uses the GPL license or a proprietary
|
||||
license. If this is a problem for you, consider using another TLS library.
|
||||
|
||||
## NSS
|
||||
|
||||
(May be used for SSL/TLS support) Is covered by the
|
||||
[MPL](https://www.mozilla.org/MPL/) license, the GPL license and the LGPL
|
||||
license. You may choose to license the code under MPL terms, GPL terms, or
|
||||
LGPL terms. These licenses grant you different permissions and impose
|
||||
different obligations. You should select the license that best meets your
|
||||
needs.
|
||||
|
||||
## mbedTLS
|
||||
|
||||
(May be used for SSL/TLS support) Uses the [Apache 2.0
|
||||
license](https://opensource.org/licenses/Apache-2.0) or the GPL license.
|
||||
You may choose to license the code under Apache 2.0 terms or GPL terms.
|
||||
These licenses grant you different permissions and impose different
|
||||
obligations. You should select the license that best meets your needs.
|
||||
|
||||
## BoringSSL
|
||||
|
||||
(May be used for SSL/TLS support) As an OpenSSL fork, it has the same
|
||||
license as that.
|
||||
|
||||
## libressl
|
||||
|
||||
(May be used for SSL/TLS support) As an OpenSSL fork, it has the same
|
||||
license as that.
|
||||
|
||||
## c-ares
|
||||
|
||||
(Used for asynchronous name resolves) Uses an MIT license that is very
|
||||
liberal and imposes no restrictions on any other library or part you may link
|
||||
with.
|
||||
|
||||
## zlib
|
||||
|
||||
(Used for compressed Transfer-Encoding support) Uses an MIT-style license
|
||||
that shouldn't collide with any other library.
|
||||
|
||||
## MIT Kerberos
|
||||
|
||||
(May be used for GSS support) MIT licensed, that shouldn't collide with any
|
||||
other parts.
|
||||
|
||||
## Heimdal
|
||||
|
||||
(May be used for GSS support) Heimdal is Original BSD licensed with the
|
||||
announcement clause.
|
||||
|
||||
## GNU GSS
|
||||
|
||||
(May be used for GSS support) GNU GSS is GPL licensed. Note that you may not
|
||||
distribute binary curl packages that uses this if you build curl to also link
|
||||
and use any Original BSD licensed libraries!
|
||||
|
||||
## libidn
|
||||
|
||||
(Used for IDNA support) Uses the GNU Lesser General Public License [3]. LGPL
|
||||
is a variation of GPL with slightly less aggressive "copyleft". This license
|
||||
requires more requirements to be met when distributing binaries, see the
|
||||
license for details. Also note that if you distribute a binary that includes
|
||||
this library, you must also include the full LGPL license text. Please
|
||||
properly point out what parts of the distributed package that the license
|
||||
addresses.
|
||||
|
||||
## OpenLDAP
|
||||
|
||||
(Used for LDAP support) Uses a Modified BSD-style license. Since libcurl uses
|
||||
OpenLDAP as a shared library only, I have not heard of anyone that ships
|
||||
OpenLDAP linked with libcurl in an app.
|
||||
|
||||
## libssh2
|
||||
|
||||
(Used for scp and sftp support) libssh2 uses a Modified BSD-style license.
|
@ -15,6 +15,7 @@ MAIL ETIQUETTE
|
||||
1.6 Handling trolls and spam
|
||||
1.7 How to unsubscribe
|
||||
1.8 I posted, now what?
|
||||
1.9 Your emails are public
|
||||
|
||||
2. Sending mail
|
||||
2.1 Reply or New Mail
|
||||
@ -33,22 +34,22 @@ MAIL ETIQUETTE
|
||||
1.1 Mailing Lists
|
||||
|
||||
The mailing lists we have are all listed and described at
|
||||
http://curl.haxx.se/mail/
|
||||
https://curl.haxx.se/mail/
|
||||
|
||||
Each mailing list is targeted to a specific set of users and subjects,
|
||||
please use the one or the ones that suit you the most.
|
||||
|
||||
Each mailing list have hundreds up to thousands of readers, meaning that
|
||||
each mail sent will be received and read by a very large amount of people.
|
||||
Each mailing list has hundreds up to thousands of readers, meaning that
|
||||
each mail sent will be received and read by a very large number of people.
|
||||
People from various cultures, regions, religions and continents.
|
||||
|
||||
1.2 Netiquette
|
||||
|
||||
Netiquette is a common name 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.
|
||||
|
||||
This document outlines what we in the cURL project considers to be good
|
||||
This document outlines what we in the curl project consider to be good
|
||||
etiquette, and primarily this focus on how to behave on and how to use our
|
||||
mailing lists.
|
||||
|
||||
@ -56,7 +57,7 @@ MAIL ETIQUETTE
|
||||
|
||||
Many people send one question to one person. One person gets many mails, and
|
||||
there is only one person who can give you a reply. The question may be
|
||||
something that other people are also wanting to ask. These other people have
|
||||
something that other people would also like to ask. These other people have
|
||||
no way to read the reply, but to ask the one person the question. The one
|
||||
person consequently gets overloaded with mail.
|
||||
|
||||
@ -79,8 +80,8 @@ MAIL ETIQUETTE
|
||||
1.5 Moderation of new posters
|
||||
|
||||
Several of the curl mailing lists automatically make all posts from new
|
||||
subscribers require moderation. This means that after you've subscribed and
|
||||
send your first mail to a list, that mail will not be let through to the
|
||||
subscribers be moderated. This means that after you've subscribed and
|
||||
sent your first mail to a list, that mail will not be let through to the
|
||||
list until a mailing list administrator has verified that it is OK and
|
||||
permits it to get posted.
|
||||
|
||||
@ -104,26 +105,26 @@ 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 particular, contact him/her
|
||||
off-list. The subject will be taken care of as good as possible to prevent
|
||||
repeated offenses, but responding on the list to such messages never lead to
|
||||
you believe the list admin should do something in particular, contact him/her
|
||||
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
|
||||
the entire purpose of it getting to the list in the first place.
|
||||
the entire purpose of it getting sent to the list in the first place.
|
||||
|
||||
Don't feed the trolls!
|
||||
|
||||
1.7 How to unsubscribe
|
||||
|
||||
You unsubscribe the same way you subscribed in the first place. You go to
|
||||
the page for the particular mailing list you're subscribed to and you enter
|
||||
You can unsubscribe the same way you subscribed in the first place. You go
|
||||
to the page for the particular mailing list you're subscribed to and you enter
|
||||
your email address and password and press the unsubscribe button.
|
||||
|
||||
Also, this information is included in the headers of every mail that is sent
|
||||
out to all curl related mailing lists and there's footer in each mail that
|
||||
links to the "admin" page on which you can unsubscribe and change other
|
||||
options.
|
||||
Also, the instructions to unsubscribe are included in the headers of every
|
||||
mail that is sent out to all curl related mailing lists and there's a footer
|
||||
in each mail that links to the "admin" page on which you can unsubscribe and
|
||||
change other options.
|
||||
|
||||
You NEVER EVER email the mailing list requesting someone else to get you off
|
||||
You NEVER EVER email the mailing list requesting someone else to take you off
|
||||
the list.
|
||||
|
||||
1.8 I posted, now what?
|
||||
@ -132,35 +133,56 @@ MAIL ETIQUETTE
|
||||
send the email, your post will just be silently discarded.
|
||||
|
||||
If you posted for the first time to the mailing list, you first need to wait
|
||||
for an administrator to allow your email to go through. This normally
|
||||
for an administrator to allow your email to go through (moderated). This normally
|
||||
happens very quickly but in case we're asleep, you may have to wait a few
|
||||
hours.
|
||||
|
||||
Once your email goes through it is sent out to several hundred or even
|
||||
thousand recipients. Your email may cover an area that not that many people
|
||||
thousands of recipients. Your email may cover an area that not that many people
|
||||
know about or are interested in. Or possibly the person who knows about it
|
||||
is on vacation or under a very heavy work load right now. You have to wait
|
||||
for a response and you must not expect to get a response at all, but
|
||||
is on vacation or under a very heavy work load right now. You may have to wait
|
||||
for a response and you should not expect to get a response at all, but
|
||||
hopefully you get an answer within a couple of days.
|
||||
|
||||
You do yourself and all of us a service when you include as many details as
|
||||
possible already in your first email. Mention your operating system and
|
||||
environment. Tell us which curl version you're using and tell us what you
|
||||
did, what happened and what you expected would happen. Preferably, show us
|
||||
what you did in details enough to allow others to help point out the problem
|
||||
or repeat the same steps in their places.
|
||||
what you did with details enough to allow others to help point out the problem
|
||||
or repeat the same steps in their locations.
|
||||
|
||||
Failing to include details will only delay responses and make people respond
|
||||
and ask for the details and you have to send a follow-up email that includes
|
||||
them.
|
||||
and ask for more details and you will have to send a follow-up email that
|
||||
includes them.
|
||||
|
||||
Expect the responses to primarily help YOU debug the issue, or ask you
|
||||
Expect the responses to primarily help YOU debug the issue, or ask YOU
|
||||
questions that can lead you or others towards a solution or explanation to
|
||||
whatever you experience.
|
||||
|
||||
If you are a repeat offender to the guidelines outlined in this document,
|
||||
chances are that people will ignore you at will and your chances to get
|
||||
responses will greatly diminish.
|
||||
responses in the future will greatly diminish.
|
||||
|
||||
1.9 Your emails are public
|
||||
|
||||
Your email, its contents and all its headers and the details in those
|
||||
headers will be received by every subscriber of the mailing list that you
|
||||
send your email to.
|
||||
|
||||
Your email as sent to a curl mailing list will end up in mail archives, on
|
||||
the curl web site and elsewhere, for others to see and read. Today and in
|
||||
the future. In addition to the archives, the mail is sent out to thousands
|
||||
of individuals. There is no way to undo a sent email.
|
||||
|
||||
When sending emails to a curl mailing list, do not include sensitive
|
||||
information such as user names and passwords; use fake ones, temporary ones
|
||||
or just remove them completely from the mail. Note that this includes base64
|
||||
encoded HTTP Basic auth headers.
|
||||
|
||||
This public nature of the curl mailing lists makes automatically inserted mail
|
||||
footers about mails being "private" or "only meant for the recipient" or
|
||||
similar even more silly than usual. Because they are absolutely not private
|
||||
when sent to a public mailing list.
|
||||
|
||||
|
||||
2. Sending mail
|
||||
@ -183,7 +205,7 @@ MAIL ETIQUETTE
|
||||
|
||||
We're actively discouraging replying back to the single person by setting
|
||||
the Reply-To: field in outgoing mails back to the mailing list address,
|
||||
making it harder for people to mail the author only by mistake.
|
||||
making it harder for people to mail the author directly, if only by mistake.
|
||||
|
||||
2.3 Use a Sensible Subject
|
||||
|
||||
@ -198,10 +220,9 @@ MAIL ETIQUETTE
|
||||
mail conversation below. It forces users to read the mail in a backwards
|
||||
order to properly understand it.
|
||||
|
||||
This is why top posting is so bad:
|
||||
This is why top posting is so bad (in top posting order):
|
||||
|
||||
A: Because it messes up the order in which people normally read
|
||||
text.
|
||||
A: Because it messes up the order in which people normally read text.
|
||||
Q: Why is top-posting such a bad thing?
|
||||
A: Top-posting.
|
||||
Q: What is the most annoying thing in e-mail?
|
||||
@ -255,11 +276,10 @@ MAIL ETIQUETTE
|
||||
If you are the one who asks, please consider responding once more in case
|
||||
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 of
|
||||
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
|
||||
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.
|
||||
|
||||
|
1042
curl/docs/MANUAL
1042
curl/docs/MANUAL
File diff suppressed because it is too large
Load Diff
@ -5,11 +5,11 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
# 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
|
||||
@ -22,33 +22,87 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||
|
||||
man_MANS = curl.1 curl-config.1
|
||||
noinst_man_MANS = mk-ca-bundle.1
|
||||
# EXTRA_DIST breaks with $(abs_builddir) so build it using this variable
|
||||
# but distribute it (using the relative file name) in the next variable
|
||||
man_MANS = $(abs_builddir)/curl.1
|
||||
noinst_man_MANS = curl.1 mk-ca-bundle.1
|
||||
dist_man_MANS = curl-config.1
|
||||
GENHTMLPAGES = curl.html curl-config.html mk-ca-bundle.html
|
||||
PDFPAGES = curl.pdf curl-config.pdf mk-ca-bundle.pdf
|
||||
MANDISTPAGES = curl.1.dist curl-config.1.dist
|
||||
|
||||
HTMLPAGES = $(GENHTMLPAGES) index.html
|
||||
|
||||
SUBDIRS = examples libcurl
|
||||
# Build targets in this file (.) before cmdline-opts to ensure that
|
||||
# the curl.1 rule below runs first
|
||||
SUBDIRS = . cmdline-opts
|
||||
DIST_SUBDIRS = $(SUBDIRS) examples libcurl
|
||||
|
||||
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES)
|
||||
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
|
||||
|
||||
EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
|
||||
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
|
||||
KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
|
||||
$(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
|
||||
MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE \
|
||||
SSL-PROBLEMS HTTP2.md ROADMAP.md
|
||||
EXTRA_DIST = \
|
||||
$(noinst_man_MANS) \
|
||||
ALTSVC.md \
|
||||
BINDINGS.md \
|
||||
BUGS \
|
||||
CHECKSRC.md \
|
||||
CIPHERS.md \
|
||||
CMakeLists.txt \
|
||||
CODE_OF_CONDUCT.md \
|
||||
CODE_STYLE.md \
|
||||
CONTRIBUTE.md \
|
||||
DEPRECATE.md \
|
||||
FAQ \
|
||||
FEATURES \
|
||||
GOVERNANCE.md \
|
||||
HELP-US.md \
|
||||
HISTORY.md \
|
||||
HTTP-COOKIES.md \
|
||||
HTTP2.md \
|
||||
INSTALL \
|
||||
INSTALL.cmake \
|
||||
INSTALL.md \
|
||||
INTERNALS.md \
|
||||
KNOWN_BUGS \
|
||||
LICENSE-MIXING.md \
|
||||
MAIL-ETIQUETTE \
|
||||
README.cmake \
|
||||
README.md \
|
||||
README.netware \
|
||||
README.win32 \
|
||||
RELEASE-PROCEDURE.md \
|
||||
RESOURCES \
|
||||
ROADMAP.md \
|
||||
SECURITY-PROCESS.md \
|
||||
SSL-PROBLEMS.md \
|
||||
SSLCERTS.md \
|
||||
THANKS \
|
||||
TODO \
|
||||
TheArtOfHttpScripting \
|
||||
VERSIONS
|
||||
|
||||
MAN2HTML= roffit < $< >$@
|
||||
MAN2HTML= roffit $< >$@
|
||||
|
||||
SUFFIXES = .1 .html .pdf
|
||||
|
||||
# $(abs_builddir) is to disable VPATH when searching for this file, which
|
||||
# would otherwise find the copy in $(srcdir) which breaks the $(HUGE)
|
||||
# rule in src/Makefile.am in out-of-tree builds that references the file in the
|
||||
# build directory.
|
||||
#
|
||||
# First, seed the used copy of curl.1 with the prebuilt copy (in an out-of-tree
|
||||
# build), then run make recursively to rebuild it only if its dependencies
|
||||
# have changed.
|
||||
$(abs_builddir)/curl.1:
|
||||
if test "$(top_builddir)x" != "$(top_srcdir)x" -a -e "$(srcdir)/curl.1"; then \
|
||||
$(INSTALL_DATA) "$(srcdir)/curl.1" $@; fi
|
||||
cd cmdline-opts && $(MAKE)
|
||||
|
||||
html: $(HTMLPAGES)
|
||||
cd libcurl; make html
|
||||
cd libcurl && $(MAKE) html
|
||||
|
||||
pdf: $(PDFPAGES)
|
||||
cd libcurl; make pdf
|
||||
cd libcurl && $(MAKE) pdf
|
||||
|
||||
.1.html:
|
||||
$(MAN2HTML)
|
||||
@ -60,3 +114,5 @@ pdf: $(PDFPAGES)
|
||||
rm $$foo.ps; \
|
||||
echo "converted $< to $@")
|
||||
|
||||
distclean:
|
||||
rm -f $(CLEANFILES)
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -21,11 +21,11 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
# 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
|
||||
@ -36,7 +36,17 @@
|
||||
#
|
||||
###########################################################################
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -100,10 +110,9 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = docs
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am INSTALL \
|
||||
THANKS TODO
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
|
||||
$(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/m4/curl-confopts.m4 \
|
||||
$(top_srcdir)/m4/curl-functions.m4 \
|
||||
$(top_srcdir)/m4/curl-openssl.m4 \
|
||||
@ -122,9 +131,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
||||
$(top_builddir)/include/curl/curlbuild.h
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
@ -140,7 +149,7 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
depcomp =
|
||||
am__depfiles_maybe =
|
||||
am__maybe_remake_depfiles =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
@ -185,7 +194,7 @@ am__uninstall_files_from_dir = { \
|
||||
}
|
||||
man1dir = $(mandir)/man1
|
||||
am__installdirs = "$(DESTDIR)$(man1dir)"
|
||||
MANS = $(man_MANS)
|
||||
MANS = $(dist_man_MANS) $(man_MANS)
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
am__recursive_targets = \
|
||||
@ -193,7 +202,7 @@ am__recursive_targets = \
|
||||
$(RECURSIVE_CLEAN_TARGETS) \
|
||||
$(am__extra_recursive_targets)
|
||||
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
distdir
|
||||
distdir distdir-am
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
@ -213,7 +222,8 @@ am__define_uniq_tagged_files = \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in INSTALL \
|
||||
THANKS TODO
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
@ -244,6 +254,7 @@ ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AR_FLAGS = @AR_FLAGS@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@ -279,7 +290,9 @@ 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_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@ -293,11 +306,15 @@ ENABLE_SHARED = @ENABLE_SHARED@
|
||||
ENABLE_STATIC = @ENABLE_STATIC@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
|
||||
GCOV = @GCOV@
|
||||
GREP = @GREP@
|
||||
HAVE_BROTLI = @HAVE_BROTLI@
|
||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||
HAVE_LIBZ = @HAVE_LIBZ@
|
||||
HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
|
||||
HAVE_PROTO_BSDSOCKET_H = @HAVE_PROTO_BSDSOCKET_H@
|
||||
IDN_ENABLED = @IDN_ENABLED@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
@ -305,6 +322,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
IPV6_ENABLED = @IPV6_ENABLED@
|
||||
LCOV = @LCOV@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
@ -317,6 +335,7 @@ LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
@ -349,29 +368,33 @@ REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SSL_BACKENDS = @SSL_BACKENDS@
|
||||
SSL_ENABLED = @SSL_ENABLED@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUPPORT_FEATURES = @SUPPORT_FEATURES@
|
||||
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
|
||||
USE_ARES = @USE_ARES@
|
||||
USE_AXTLS = @USE_AXTLS@
|
||||
USE_CYASSL = @USE_CYASSL@
|
||||
USE_DARWINSSL = @USE_DARWINSSL@
|
||||
USE_GNUTLS = @USE_GNUTLS@
|
||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||
USE_LIBRTMP = @USE_LIBRTMP@
|
||||
USE_LIBSSH = @USE_LIBSSH@
|
||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||
USE_MBEDTLS = @USE_MBEDTLS@
|
||||
USE_MESALINK = @USE_MESALINK@
|
||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||
USE_NSS = @USE_NSS@
|
||||
USE_OPENLDAP = @USE_OPENLDAP@
|
||||
USE_POLARSSL = @USE_POLARSSL@
|
||||
USE_SCHANNEL = @USE_SCHANNEL@
|
||||
USE_SECTRANSP = @USE_SECTRANSP@
|
||||
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
|
||||
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
|
||||
VERSION = @VERSION@
|
||||
VERSIONNUM = @VERSIONNUM@
|
||||
ZLIB_LIBS = @ZLIB_LIBS@
|
||||
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
@ -417,6 +440,7 @@ pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
@ -427,21 +451,64 @@ top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||
man_MANS = curl.1 curl-config.1
|
||||
noinst_man_MANS = mk-ca-bundle.1
|
||||
|
||||
# EXTRA_DIST breaks with $(abs_builddir) so build it using this variable
|
||||
# but distribute it (using the relative file name) in the next variable
|
||||
man_MANS = $(abs_builddir)/curl.1
|
||||
noinst_man_MANS = curl.1 mk-ca-bundle.1
|
||||
dist_man_MANS = curl-config.1
|
||||
GENHTMLPAGES = curl.html curl-config.html mk-ca-bundle.html
|
||||
PDFPAGES = curl.pdf curl-config.pdf mk-ca-bundle.pdf
|
||||
MANDISTPAGES = curl.1.dist curl-config.1.dist
|
||||
HTMLPAGES = $(GENHTMLPAGES) index.html
|
||||
SUBDIRS = examples libcurl
|
||||
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES)
|
||||
EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
|
||||
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
|
||||
KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
|
||||
$(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
|
||||
MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE \
|
||||
SSL-PROBLEMS HTTP2.md ROADMAP.md
|
||||
|
||||
MAN2HTML = roffit < $< >$@
|
||||
# Build targets in this file (.) before cmdline-opts to ensure that
|
||||
# the curl.1 rule below runs first
|
||||
SUBDIRS = . cmdline-opts
|
||||
DIST_SUBDIRS = $(SUBDIRS) examples libcurl
|
||||
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1
|
||||
EXTRA_DIST = \
|
||||
$(noinst_man_MANS) \
|
||||
ALTSVC.md \
|
||||
BINDINGS.md \
|
||||
BUGS \
|
||||
CHECKSRC.md \
|
||||
CIPHERS.md \
|
||||
CMakeLists.txt \
|
||||
CODE_OF_CONDUCT.md \
|
||||
CODE_STYLE.md \
|
||||
CONTRIBUTE.md \
|
||||
DEPRECATE.md \
|
||||
FAQ \
|
||||
FEATURES \
|
||||
GOVERNANCE.md \
|
||||
HELP-US.md \
|
||||
HISTORY.md \
|
||||
HTTP-COOKIES.md \
|
||||
HTTP2.md \
|
||||
INSTALL \
|
||||
INSTALL.cmake \
|
||||
INSTALL.md \
|
||||
INTERNALS.md \
|
||||
KNOWN_BUGS \
|
||||
LICENSE-MIXING.md \
|
||||
MAIL-ETIQUETTE \
|
||||
README.cmake \
|
||||
README.md \
|
||||
README.netware \
|
||||
README.win32 \
|
||||
RELEASE-PROCEDURE.md \
|
||||
RESOURCES \
|
||||
ROADMAP.md \
|
||||
SECURITY-PROCESS.md \
|
||||
SSL-PROBLEMS.md \
|
||||
SSLCERTS.md \
|
||||
THANKS \
|
||||
TODO \
|
||||
TheArtOfHttpScripting \
|
||||
VERSIONS
|
||||
|
||||
MAN2HTML = roffit $< >$@
|
||||
SUFFIXES = .1 .html .pdf
|
||||
all: all-recursive
|
||||
|
||||
@ -459,14 +526,13 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign docs/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
@ -483,10 +549,10 @@ mostlyclean-libtool:
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-man1: $(man_MANS)
|
||||
install-man1: $(dist_man_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list1=''; \
|
||||
list2='$(man_MANS)'; \
|
||||
list2='$(dist_man_MANS) $(man_MANS)'; \
|
||||
test -n "$(man1dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
@ -521,7 +587,7 @@ uninstall-man1:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man1dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.1[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
@ -626,7 +692,10 @@ cscopelist-am: $(am__tagged_files)
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -724,8 +793,6 @@ clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
@ -800,12 +867,27 @@ uninstall-man: uninstall-man1
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am uninstall-man uninstall-man1
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# $(abs_builddir) is to disable VPATH when searching for this file, which
|
||||
# would otherwise find the copy in $(srcdir) which breaks the $(HUGE)
|
||||
# rule in src/Makefile.am in out-of-tree builds that references the file in the
|
||||
# build directory.
|
||||
#
|
||||
# First, seed the used copy of curl.1 with the prebuilt copy (in an out-of-tree
|
||||
# build), then run make recursively to rebuild it only if its dependencies
|
||||
# have changed.
|
||||
$(abs_builddir)/curl.1:
|
||||
if test "$(top_builddir)x" != "$(top_srcdir)x" -a -e "$(srcdir)/curl.1"; then \
|
||||
$(INSTALL_DATA) "$(srcdir)/curl.1" $@; fi
|
||||
cd cmdline-opts && $(MAKE)
|
||||
|
||||
html: $(HTMLPAGES)
|
||||
cd libcurl; make html
|
||||
cd libcurl && $(MAKE) html
|
||||
|
||||
pdf: $(PDFPAGES)
|
||||
cd libcurl; make pdf
|
||||
cd libcurl && $(MAKE) pdf
|
||||
|
||||
.1.html:
|
||||
$(MAN2HTML)
|
||||
@ -817,6 +899,9 @@ pdf: $(PDFPAGES)
|
||||
rm $$foo.ps; \
|
||||
echo "converted $< to $@")
|
||||
|
||||
distclean:
|
||||
rm -f $(CLEANFILES)
|
||||
|
||||
# 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:
|
||||
|
16
curl/docs/README.cmake
Normal file
16
curl/docs/README.cmake
Normal file
@ -0,0 +1,16 @@
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
README.cmake
|
||||
Read the README file first.
|
||||
|
||||
Curl contains CMake build files that provide a way to build Curl with the
|
||||
CMake build tool (www.cmake.org). CMake is a cross platform meta build tool
|
||||
that generates native makefiles and IDE project files. The CMake build
|
||||
system can be used to build Curl on any of its supported platforms.
|
||||
|
||||
Read the INSTALL.cmake file for instructions on how to compile curl with
|
||||
CMake.
|
12
curl/docs/README.md
Normal file
12
curl/docs/README.md
Normal file
@ -0,0 +1,12 @@
|
||||
![curl logo](https://curl.haxx.se/logo/curl-logo.svg)
|
||||
|
||||
# Documentation
|
||||
|
||||
You'll find a mix of various documentation in this directory and
|
||||
subdirectories, using several different formats. Some of them are not ideal
|
||||
for reading directly in your browser.
|
||||
|
||||
If you'd rather see the rendered version of the documentation, check out the
|
||||
curl web site's [documentation section](https://curl.haxx.se/docs/) for
|
||||
general curl stuff or the [libcurl section](https://curl.haxx.se/libcurl/) for
|
||||
libcurl related documentation.
|
@ -11,17 +11,14 @@ README.netware
|
||||
Curl has been successfully compiled with gcc / nlmconv on different flavours
|
||||
of Linux as well as with the official Metrowerks CodeWarrior compiler.
|
||||
While not being the main development target, a continuously growing share of
|
||||
curl users are NetWare-based, specially also consuming the lib from PHP.
|
||||
curl users are NetWare-based, especially also consuming the lib from PHP.
|
||||
|
||||
The unix-style man pages are tricky to read on windows, so therefore are all
|
||||
those pages converted to HTML as well as pdf, and included in the release
|
||||
archives.
|
||||
The unix-style man pages are tricky to read on windows, so therefore all
|
||||
those pages are also provided as web pages on the curl web site.
|
||||
|
||||
The main curl.1 man page is also "built-in" in the command line tool. Use a
|
||||
command line similar to this in order to extract a separate text file:
|
||||
|
||||
curl -M >manual.txt
|
||||
|
||||
Read the INSTALL file for instructions how to compile curl self.
|
||||
|
||||
|
||||
Read the INSTALL file for instructions on how to compile curl self.
|
||||
|
@ -12,15 +12,12 @@ README.win32
|
||||
systems. While not being the main develop target, a fair share of curl users
|
||||
are win32-based.
|
||||
|
||||
The unix-style man pages are tricky to read on windows, so therefore are all
|
||||
those pages converted to HTML as well as pdf, and included in the release
|
||||
archives.
|
||||
The unix-style man pages are tricky to read on windows, so therefore all
|
||||
those pages are also provided as web pages on the curl web site.
|
||||
|
||||
The main curl.1 man page is also "built-in" in the command line tool. Use a
|
||||
command line similar to this in order to extract a separate text file:
|
||||
|
||||
curl -M >manual.txt
|
||||
|
||||
Read the INSTALL file for instructions how to compile curl self.
|
||||
|
||||
|
||||
Read the INSTALL file for instructions on how to compile curl self.
|
||||
|
@ -11,8 +11,9 @@ in the source code repo
|
||||
- make sure all relevant changes are committed on the master branch
|
||||
|
||||
- tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the
|
||||
tag and we use underscores instead of dots in the version number.
|
||||
|
||||
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
|
||||
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
|
||||
@ -35,12 +36,17 @@ in the curl-www repo
|
||||
|
||||
- commit all local changes
|
||||
|
||||
- tag the repo with the same tag as used for the source repo
|
||||
- tag the repo with the same name as used for the source repo.
|
||||
|
||||
- make sure all relevant changes are committed and pushed on the master branch
|
||||
|
||||
(the web site then updates its contents automatically)
|
||||
|
||||
on github
|
||||
---------
|
||||
|
||||
- edit the newly made release tag so that it is listed as the latest release
|
||||
|
||||
inform
|
||||
------
|
||||
|
||||
@ -78,12 +84,8 @@ Coming dates
|
||||
Based on the description above, here are some planned release dates (at the
|
||||
time of this writing):
|
||||
|
||||
- June 17, 2015 (version 7.43.0)
|
||||
- August 12, 2015
|
||||
- October 7, 2015
|
||||
- December 2, 2015
|
||||
- January 27, 2016
|
||||
- March 23, 2016
|
||||
- May 18, 2016
|
||||
- July 13, 2016
|
||||
- September 7, 2016
|
||||
- March 27, 2019
|
||||
- May 22, 2019
|
||||
- July 17, 2019
|
||||
- September 11, 2019
|
||||
- November 6, 2019
|
@ -7,13 +7,13 @@
|
||||
|
||||
This document lists documents and standards used by curl.
|
||||
|
||||
RFC 959 - The FTP protocol
|
||||
RFC 959 - FTP Protocol
|
||||
|
||||
RFC 1635 - How to Use Anonymous FTP
|
||||
|
||||
RFC 1738 - Uniform Resource Locators
|
||||
|
||||
RFC 1777 - defines the LDAP protocol
|
||||
RFC 1777 - Lightweight Directory Access Protocol (LDAP)
|
||||
|
||||
RFC 1808 - Relative Uniform Resource Locators
|
||||
|
||||
@ -23,9 +23,9 @@ This document lists documents and standards used by curl.
|
||||
|
||||
RFC 1951 - DEFLATE Compressed Data Format Specification
|
||||
|
||||
RFC 1952 - gzip compression format
|
||||
RFC 1952 - GZIP File Format Specification
|
||||
|
||||
RFC 1959 - LDAP URL syntax
|
||||
RFC 1959 - LDAP URL Syntax
|
||||
|
||||
RFC 2045-2049 - Everything you need to know about MIME! (needed for form
|
||||
based upload)
|
||||
@ -36,15 +36,15 @@ This document lists documents and standards used by curl.
|
||||
|
||||
RFC 2109 - HTTP State Management Mechanism (cookie stuff)
|
||||
- Also, read Netscape's specification at
|
||||
http://curl.haxx.se/rfc/cookie_spec.html
|
||||
https://curl.haxx.se/rfc/cookie_spec.html
|
||||
|
||||
RFC 2183 - The Content-Disposition Header Field
|
||||
|
||||
RFC 2195 - CRAM-MD5 authentication
|
||||
RFC 2195 - CRAM-MD5 Authentication
|
||||
|
||||
RFC 2229 - A Dictionary Server Protocol
|
||||
|
||||
RFC 2255 - Newer LDAP URL syntax document.
|
||||
RFC 2255 - Newer LDAP URL Format
|
||||
|
||||
RFC 2231 - MIME Parameter Value and Encoded Word Extensions:
|
||||
Character Sets, Languages, and Continuations
|
||||
@ -70,14 +70,16 @@ This document lists documents and standards used by curl.
|
||||
|
||||
RFC 2818 - HTTP Over TLS (TLS is the successor to SSL)
|
||||
|
||||
RFC 2821 - SMTP protocol
|
||||
RFC 2821 - Simple Mail Transfer Protocol (SMTP)
|
||||
|
||||
RFC 2964 - Use of HTTP State Management
|
||||
|
||||
RFC 2965 - HTTP State Management Mechanism. Cookies. Obsoletes RFC2109
|
||||
|
||||
RFC 3207 - SMTP over TLS
|
||||
RFC 3207 - SMTP Over TLS
|
||||
|
||||
RFC 4616 - PLAIN authentication
|
||||
RFC 4616 - PLAIN Authentication
|
||||
|
||||
RFC 4954 - SMTP Authentication
|
||||
|
||||
RFC 7932 - Brotli Compressed Data Format
|
||||
|
@ -1,139 +1,59 @@
|
||||
curl the next few years - perhaps
|
||||
=================================
|
||||
|
||||
Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is
|
||||
intended to serve as a guideline for others for information, feedback and
|
||||
possible participation.
|
||||
Roadmap of things Daniel Stenberg wants to work on next. It is intended to
|
||||
serve as a guideline for others for information, feedback and possible
|
||||
participation.
|
||||
|
||||
HTTP/2
|
||||
HTTP/3
|
||||
------
|
||||
|
||||
- test suite
|
||||
See the [QUIC and HTTP/3 wiki page](https://github.com/curl/curl/wiki/QUIC).
|
||||
|
||||
Base this on existing nghttp2 server to start with to make functional
|
||||
tests. Later on we can adopt that code or work with nghttp2 to provide ways
|
||||
to have the http2 server respond with broken responses to make sure we deal
|
||||
with that nicely as well.
|
||||
ESNI (Encrypted SNI)
|
||||
--------------------
|
||||
|
||||
To decide: if we need to bundle parts of the nghttp2 stuff that probably
|
||||
won't be shipped by many distros.
|
||||
See Daniel's post on [Support of Encrypted
|
||||
SNI](https://curl.haxx.se/mail/lib-2019-03/0000.html) on the mailing list.
|
||||
|
||||
- stream properties API
|
||||
HSTS
|
||||
----
|
||||
|
||||
Provide options for setting priorities and dependencies among the streams
|
||||
(easy handles). They are mostly information set for the stream and sent to
|
||||
the server so we don't have to add much logic for this.
|
||||
Complete and merge [the existing PR](https://github.com/curl/curl/pull/2682).
|
||||
|
||||
- server push
|
||||
Parallel transfers for the curl tool
|
||||
------------------------------------
|
||||
|
||||
Not exactly clear exactly how to support this API-wise, but by adding
|
||||
handles without asking for a resource it could be a way to be prepared to
|
||||
receive pushes in case such are sent. We probably need it to still specify
|
||||
a URL with host name, port etc but we probably need a special option to
|
||||
tell libcurl it is for server push purposes.
|
||||
This will require several new command line options to enable and control.
|
||||
|
||||
- provide option for HTTP/2 "prior knowledge" over clear text
|
||||
1. switch to creating a list of all the transfers first before any transfer
|
||||
is done
|
||||
2. make the transfers using the multi interface
|
||||
3. optionally fire up more transfers before the previous has completed
|
||||
|
||||
As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_
|
||||
it speaks HTTP/2.
|
||||
Option to refuse HTTPS => HTTP redirects
|
||||
----------------------------------------
|
||||
|
||||
- provide option to allow curl to default to HTTP/2 only when using HTTPS
|
||||
Possibly as a new bit to `CURLOPT_FOLLOWLOCATION` ?
|
||||
|
||||
We could switch on HTTP/2 by-default for HTTPS quite easily and it
|
||||
shouldn't hurt anyone, while HTTP/2 for HTTP by default could introduce
|
||||
lots of Upgrade: roundtrips that users won't like. So a separated option
|
||||
alternative makes sense.
|
||||
Option to let CURLOPT_CUSTOMREQUEST be overridden on redirect
|
||||
-------------------------------------------------------------
|
||||
|
||||
SRV records
|
||||
-----------
|
||||
(This is a common problem for people using `-X` and `-L` together.)
|
||||
|
||||
How to find services for specific domains/hosts.
|
||||
Possibly as a new bit to `CURLOPT_FOLLOWLOCATION` ?
|
||||
|
||||
HTTPS to proxy
|
||||
--------------
|
||||
Hardcode “localhost”
|
||||
--------------------
|
||||
|
||||
To avoid network traffic to/from the proxy getting snooped on.
|
||||
No need to resolve it. Avoid a risk where this is resolved over the network
|
||||
and actually responds with something else than a local address. Some operating
|
||||
systems already do this. Also:
|
||||
https://tools.ietf.org/html/draft-ietf-dnsop-let-localhost-be-localhost-02
|
||||
|
||||
curl_formadd()
|
||||
--------------
|
||||
Consider "menu config"-style build feature selection
|
||||
----------------------------------------------------
|
||||
|
||||
make sure there's an easy handle passed in to `curl_formadd()`,
|
||||
`curl_formget()` and `curl_formfree()` by adding replacement functions and
|
||||
deprecating the old ones to allow custom mallocs and more
|
||||
|
||||
third-party SASL
|
||||
----------------
|
||||
|
||||
add support for third-party SASL libraries such as Cyrus SASL - may need to
|
||||
move existing native and SSPI based authentication into vsasl folder after
|
||||
reworking HTTP and SASL code
|
||||
|
||||
SASL authentication in LDAP
|
||||
---------------------------
|
||||
|
||||
...
|
||||
|
||||
Simplify the SMTP email
|
||||
-----------------------
|
||||
|
||||
Simplify the SMTP email interface so that programmers don't have to
|
||||
construct the body of an email that contains all the headers, alternative
|
||||
content, images and attachments - maintain raw interface so that
|
||||
programmers that want to do this can
|
||||
|
||||
email capabilities
|
||||
------------------
|
||||
|
||||
Allow the email protocols to return the capabilities before
|
||||
authenticating. This will allow an application to decide on the best
|
||||
authentication mechanism
|
||||
|
||||
Win32 pthreads
|
||||
--------------
|
||||
|
||||
Allow Windows threading model to be replaced by Win32 pthreads port
|
||||
|
||||
dynamic buffer size
|
||||
-------------------
|
||||
|
||||
Implement a dynamic buffer size to allow SFTP to use much larger buffers and
|
||||
possibly allow the size to be customizable by applications. Use less memory
|
||||
when handles are not in use?
|
||||
|
||||
New stuff - curl
|
||||
----------------
|
||||
|
||||
1. Embed a language interpreter (lua?). For that middle ground where curl
|
||||
isn’t enough and a libcurl binding feels “too much”. Build-time conditional
|
||||
of course.
|
||||
|
||||
2. Simplify the SMTP command line so that the headers and multi-part content
|
||||
don't have to be constructed before calling curl
|
||||
|
||||
Improve
|
||||
-------
|
||||
|
||||
1. build for windows (considered hard by many users)
|
||||
|
||||
2. curl -h output (considered overwhelming to users)
|
||||
|
||||
3. we have > 160 command line options, is there a way to redo things to
|
||||
simplify or improve the situation as we are likely to keep adding
|
||||
features/options in the future too
|
||||
|
||||
4. docs (considered "bad" by users but how do we make it better?)
|
||||
|
||||
- split up curl.1
|
||||
|
||||
5. authentication framework (consider merging HTTP and SASL authentication to
|
||||
give one API for protocols to call)
|
||||
|
||||
6. Perform some of the clean up from the TODO document, removing old
|
||||
definitions and such like that are currently earmarked to be removed years
|
||||
ago
|
||||
|
||||
Remove
|
||||
------
|
||||
|
||||
1. makefile.vc files as there is no point in maintaining two sets of Windows
|
||||
makefiles. Note: These are currently being used by the Windows autobuilds
|
||||
Allow easier building of custom libcurl versions with only a selected feature
|
||||
where the available features are easily browsable and toggle-able ON/OFF or
|
||||
similar.
|
||||
|
@ -1,20 +1,14 @@
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
curl security process
|
||||
=====================
|
||||
|
||||
curl security for developers
|
||||
============================
|
||||
|
||||
This document is intended to provide guidance to curl developers on how
|
||||
security vulnerabilities should be handled.
|
||||
This document describes how security vulnerabilities should be handled in the
|
||||
curl project.
|
||||
|
||||
Publishing Information
|
||||
----------------------
|
||||
|
||||
All known and public curl or libcurl related vulnerabilities are listed on
|
||||
[the curl web site security page](http://curl.haxx.se/docs/security.html).
|
||||
[the curl web site security page](https://curl.haxx.se/docs/security.html).
|
||||
|
||||
Security vulnerabilities should not be entered in the project's public bug
|
||||
tracker unless the necessary configuration is in place to limit access to the
|
||||
@ -62,14 +56,17 @@ announcement.
|
||||
then a separate earlier release for security reasons should be considered.
|
||||
|
||||
- Write a security advisory draft about the problem that explains what the
|
||||
problem is, its impact, which versions it affects, solutions or
|
||||
workarounds, when the release is out and make sure to credit all
|
||||
contributors properly.
|
||||
problem is, its impact, which versions it affects, solutions or workarounds,
|
||||
when the release is out and make sure to credit all contributors properly.
|
||||
Figure out the CWE (Common Weakness Enumeration) number for the flaw.
|
||||
|
||||
- Request a CVE number from distros@openwall[1] when also informing and
|
||||
preparing them for the upcoming public security vulnerability announcement -
|
||||
attach the advisory draft for information. Note that 'distros' won't accept
|
||||
an embargo longer than 19 days.
|
||||
- Request a CVE number from
|
||||
[distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros)
|
||||
when also informing and preparing them for the upcoming public security
|
||||
vulnerability announcement - attach the advisory draft for information. Note
|
||||
that 'distros' won't accept an embargo longer than 14 days and they do not
|
||||
care for Windows-specific flaws. For windows-specific flaws, request CVE
|
||||
directly from MITRE.
|
||||
|
||||
- Update the "security advisory" with the CVE number.
|
||||
|
||||
@ -78,9 +75,11 @@ announcement.
|
||||
to the 'distros' mailing list to allow them to use the fix prior to the
|
||||
public announcement.
|
||||
|
||||
- At the day of the next release, the private branch is merged into the master
|
||||
branch and pushed. Once pushed, the information is accessible to the public
|
||||
and the actual release should follow suit immediately afterwards.
|
||||
- No more than 48 hours before the release, the private branch is merged into
|
||||
the master branch and pushed. Once pushed, the information is accessible to
|
||||
the public and the actual release should follow suit immediately afterwards.
|
||||
The time between the push and the release is used for final tests and
|
||||
reviews.
|
||||
|
||||
- The project team creates a release that includes the fix.
|
||||
|
||||
@ -91,9 +90,7 @@ announcement.
|
||||
- The security web page on the web site should get the new vulnerability
|
||||
mentioned.
|
||||
|
||||
[1] = http://oss-security.openwall.org/wiki/mailing-lists/distros
|
||||
|
||||
CURL-SECURITY (at haxx dot se)
|
||||
curl-security (at haxx dot se)
|
||||
------------------------------
|
||||
|
||||
Who is on this list? There are a couple of criteria you must meet, and then we
|
||||
@ -103,5 +100,36 @@ curl project and you have shown an understanding for the project and its way
|
||||
of working. You must've been around for a good while and you should have no
|
||||
plans in vanishing in the near future.
|
||||
|
||||
We do not make the list of partipants public mostly because it tends to vary
|
||||
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
|
||||
------------------------------
|
||||
|
||||
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'.
|
||||
|
||||
4. Put the new advisory markdown file in the curl-www/docs/ directory. Add it
|
||||
to the git repo.
|
||||
|
||||
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 Internet Bug Bounty
|
||||
-----------------------------
|
||||
|
||||
The curl project does not run any bounty program on its own, but there are
|
||||
outside organizations that do. First report your issue the normal way and
|
||||
proceed as described in this document.
|
||||
|
||||
Then, if the issue is [critical](https://hackerone.com/ibb-data), you are
|
||||
eligible to apply for a bounty from Hackerone for your find.
|
||||
|
||||
Once your reported vulnerability has been publicly disclosed by the curl
|
||||
project, you can submit a [report to them](https://hackerone.com/ibb-data).
|
@ -4,7 +4,7 @@
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
SSL problems
|
||||
# SSL problems
|
||||
|
||||
First, let's establish that we often refer to TLS and SSL interchangeably as
|
||||
SSL here. The current protocol is called TLS, it was called SSL a long time
|
||||
@ -14,19 +14,19 @@ SSL problems
|
||||
fail. This is a document that attempts to details the most common ones and
|
||||
how to mitigate them.
|
||||
|
||||
CA certs
|
||||
## CA certs
|
||||
|
||||
CA certs are used to digitally verify the server's certificate. You need a
|
||||
"ca bundle" for this. See lots of more details on this in the SSLCERTS
|
||||
document.
|
||||
|
||||
CA bundle missing intermediate certificates
|
||||
## CA bundle missing intermediate certificates
|
||||
|
||||
When using said CA bundle to verify a server cert, you will experience
|
||||
problems if your CA cert does not have the certificates for the
|
||||
intermediates in the whole trust chain.
|
||||
|
||||
SSL version
|
||||
## Protocol version
|
||||
|
||||
Some broken servers fail to support the protocol negotiation properly that
|
||||
SSL servers are supposed to handle. This may cause the connection to fail
|
||||
@ -36,7 +36,9 @@ SSL version
|
||||
An additional complication can be that modern SSL libraries sometimes are
|
||||
built with support for older SSL and TLS versions disabled!
|
||||
|
||||
SSL ciphers
|
||||
All versions of SSL are considered insecure and should be avoided. Use TLS.
|
||||
|
||||
## Ciphers
|
||||
|
||||
Clients give servers a list of ciphers to select from. If the list doesn't
|
||||
include any ciphers the server wants/can use, the connection handshake
|
||||
@ -51,11 +53,15 @@ SSL ciphers
|
||||
Note that these weak ciphers are identified as flawed. For example, this
|
||||
includes symmetric ciphers with less than 128 bit keys and RC4.
|
||||
|
||||
WinSSL in Windows XP is not able to connect to servers that no longer
|
||||
support the legacy handshakes and algorithms used by those versions, so we
|
||||
advice against building curl to use WinSSL on really old Windows versions.
|
||||
|
||||
References:
|
||||
|
||||
https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
|
||||
|
||||
Allow BEAST
|
||||
|
||||
## Allow BEAST
|
||||
|
||||
BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means
|
||||
to mitigate this attack, it turned out that some broken servers out there in
|
||||
@ -65,3 +71,17 @@ Allow BEAST
|
||||
introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability
|
||||
but on the other hand it allows curl to connect to that kind of strange
|
||||
servers.
|
||||
|
||||
## Disabling certificate revocation checks
|
||||
|
||||
Some SSL backends may do certificate revocation checks (CRL, OCSP, etc)
|
||||
depending on the OS or build configuration. The --ssl-no-revoke option was
|
||||
introduced in 7.44.0 to disable revocation checking but currently is only
|
||||
supported for WinSSL (the native Windows SSL library), with an exception in
|
||||
the case of Windows' Untrusted Publishers blacklist which it seems can't be
|
||||
bypassed. This option may have broader support to accommodate other SSL
|
||||
backends in the future.
|
||||
|
||||
References:
|
||||
|
||||
https://curl.haxx.se/docs/ssl-compared.html
|
@ -20,8 +20,8 @@ support.
|
||||
It is about trust
|
||||
-----------------
|
||||
|
||||
This system is about trust. In your local CA cert bundle you have certs from
|
||||
*trusted* Certificate Authorities that you then can use to verify that the
|
||||
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're signed by one of the CAs you
|
||||
trust.
|
||||
|
||||
@ -35,16 +35,16 @@ Certificate Verification
|
||||
------------------------
|
||||
|
||||
libcurl performs peer SSL certificate verification by default. This is done
|
||||
by using CA cert bundle that the SSL library can use to make sure the peer's
|
||||
server certificate is valid.
|
||||
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 bundle, you can be sure
|
||||
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.
|
||||
|
||||
If the remote server uses a self-signed certificate, if you don't install a CA
|
||||
cert bundle, if the server uses a certificate signed by a CA that isn't
|
||||
included in the bundle you use or if the remote host is an impostor
|
||||
cert store, if the server uses a certificate signed by a CA that isn't
|
||||
included in the store you use or if the remote host is an impostor
|
||||
impersonating your favorite site, and you want to transfer files from this
|
||||
server, do one of the following:
|
||||
|
||||
@ -59,12 +59,22 @@ server, do one of the following:
|
||||
|
||||
With the curl command line tool: --cacert [file]
|
||||
|
||||
3. Add the CA cert for your server to the existing default CA cert bundle.
|
||||
The default path of the CA bundle used can be changed by running configure
|
||||
with the --with-ca-bundle option pointing out the path of your choice.
|
||||
3. Add the CA cert for your server to the existing default CA certificate
|
||||
store. The default CA certificate store can changed at compile time with the
|
||||
following configure options:
|
||||
|
||||
To do this, you need to get the CA cert for your server in PEM format and
|
||||
then append that to your CA cert bundle.
|
||||
--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-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 you use Internet Explorer, this is one way to get extract the CA cert
|
||||
for a particular server:
|
||||
@ -76,22 +86,22 @@ server, do one of the following:
|
||||
- Convert it from crt to PEM using the openssl tool:
|
||||
openssl x509 -inform DES -in yourdownloaded.crt \
|
||||
-out outcert.pem -text
|
||||
- Append the 'outcert.pem' to the CA cert bundle or use it stand-alone
|
||||
- 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
|
||||
for a particular server:
|
||||
|
||||
- `openssl s_client -connect xxxxx.com:443 |tee logfile`
|
||||
- type "QUIT", followed by the "ENTER" key
|
||||
- `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 trust the certificate, you can append it to your
|
||||
cert bundle or use it stand-alone as described. Just remember that the
|
||||
security is no better than the way you obtained the certificate.
|
||||
- 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.
|
||||
|
||||
4. If you're using the curl command line tool, you can specify your own CA
|
||||
cert path by setting the environment variable `CURL_CA_BUNDLE` to the path
|
||||
@ -109,13 +119,13 @@ server, do one of the following:
|
||||
5. Get a better/different/newer CA cert bundle! One option is to extract the
|
||||
one a recent Firefox browser uses by running 'make ca-bundle' in the curl
|
||||
build tree root, or possibly download a version that was generated this
|
||||
way for you: [CA Extract](http://curl.haxx.se/docs/caextract.html)
|
||||
way for you: [CA Extract](https://curl.haxx.se/docs/caextract.html)
|
||||
|
||||
Neglecting to use one of the above methods when dealing with a server using a
|
||||
certificate that isn't signed by one of the certificates in the installed CA
|
||||
cert bundle, will cause SSL to report an error ("certificate verify failed")
|
||||
during the handshake and SSL will then refuse further communication with that
|
||||
server.
|
||||
certificate store, will cause SSL to report an error ("certificate verify
|
||||
failed") during the handshake and SSL will then refuse further communication
|
||||
with that server.
|
||||
|
||||
Certificate Verification with NSS
|
||||
---------------------------------
|
||||
@ -123,8 +133,8 @@ 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
|
||||
enables NSS to read the OpenSSL PEM CA bundle. This library is missing in
|
||||
OpenSuSE, and without it, NSS can only work with its own internal formats. NSS
|
||||
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
|
||||
@ -151,3 +161,13 @@ disabled. Secure Transport on iOS will run OCSP checks on certificates unless
|
||||
peer verification is disabled. Secure Transport on OS X will run either OCSP
|
||||
or CRL checks on certificates if those features are enabled, and this behavior
|
||||
can be adjusted in the preferences of Keychain Access.
|
||||
|
||||
HTTPS proxy
|
||||
-----------
|
||||
|
||||
Since version 7.52.0, curl can do HTTPS to the proxy separately from the
|
||||
connection to the server. This TLS connection is handled separately from the
|
||||
server connection so instead of `--insecure` and `--cacert` to control the
|
||||
certificate verification, you use `--proxy-insecure` and `--proxy-cacert`.
|
||||
With these options, you make sure that the TLS connection and the trust of the
|
||||
proxy can be kept totally separate from the TLS connection to the server.
|
674
curl/docs/THANKS
674
curl/docs/THANKS
File diff suppressed because it is too large
Load Diff
936
curl/docs/TODO
936
curl/docs/TODO
File diff suppressed because it is too large
Load Diff
@ -136,7 +136,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
The Uniform Resource Locator format is how you specify the address of a
|
||||
particular resource on the Internet. You know these, you've seen URLs like
|
||||
http://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
|
||||
https://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
|
||||
canonical spec. And yeah, the formal name is not URL, it is URI.
|
||||
|
||||
2.2 Host
|
||||
@ -145,15 +145,15 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
address and that's what curl will communicate with. Alternatively you specify
|
||||
the IP address directly in the URL instead of a name.
|
||||
|
||||
For development and other trying out situation, you can point out a different
|
||||
For development and other trying out situations, you can point to a different
|
||||
IP address for a host name than what would otherwise be used, by using curl's
|
||||
--resolve option:
|
||||
|
||||
curl --resolve www.example.org:80:127.0.0.1 http://www.example.org/
|
||||
|
||||
|
||||
2.3 Port number
|
||||
|
||||
Each protocol curl supports operate on a default port number, be it over TCP
|
||||
Each protocol curl supports operates on a default port number, be it over TCP
|
||||
or in some cases UDP. Normally you don't have to take that into
|
||||
consideration, but at times you run test servers on other ports or
|
||||
similar. Then you can specify the port number in the URL with a colon and a
|
||||
@ -164,7 +164,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
The port number you specify in the URL is the number that the server uses to
|
||||
offer its services. Sometimes you may use a local proxy, and then you may
|
||||
need to specify that proxy's port number separate on what curl needs to
|
||||
need to specify that proxy's port number separately for what curl needs to
|
||||
connect to locally. Like when using a HTTP proxy on port 4321:
|
||||
|
||||
curl --proxy http://proxy.example.org:4321 http://remote.example.org/
|
||||
@ -172,7 +172,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
2.4 User name and password
|
||||
|
||||
Some services are setup to require HTTP authentication and then you need to
|
||||
provide name and password which then is transferred to the remote site in
|
||||
provide name and password which is then transferred to the remote site in
|
||||
various ways depending on the exact authentication protocol used.
|
||||
|
||||
You can opt to either insert the user and password in the URL or you can
|
||||
@ -198,12 +198,12 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
3.1 GET
|
||||
|
||||
The simplest and most common request/operation made using HTTP is to get a
|
||||
The simplest and most common request/operation made using HTTP is to GET a
|
||||
URL. The URL could itself refer to a web page, an image or a file. The client
|
||||
issues a GET request to the server and receives the document it asked for.
|
||||
If you issue the command line
|
||||
|
||||
curl http://curl.haxx.se
|
||||
curl https://curl.haxx.se
|
||||
|
||||
you get a web page returned in your terminal window. The entire HTML document
|
||||
that that URL holds.
|
||||
@ -269,14 +269,14 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
4.1 Forms explained
|
||||
|
||||
Forms are the general way a web site can present a HTML page with fields for
|
||||
the user to enter data in, and then press some kind of 'OK' or 'submit'
|
||||
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
|
||||
in a database, or to add the info in a bug track system, display the entered
|
||||
in a database, or to add the info in a bug tracking system, display the entered
|
||||
address on a map or using the info as a login-prompt verifying that the user
|
||||
is allowed to see what it is about to see.
|
||||
|
||||
Of course there has to be some kind of program in the server end to receive
|
||||
Of course there has to be some kind of program on the server end to receive
|
||||
the data you send. You cannot just invent something out of the air.
|
||||
|
||||
4.2 GET
|
||||
@ -369,7 +369,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
4.5 Hidden Fields
|
||||
|
||||
A very common way for HTML based application to pass state information
|
||||
A very common way for HTML based applications to pass state information
|
||||
between pages is to add hidden fields to the forms. Hidden fields are
|
||||
already filled in, they aren't displayed to the user and they get passed
|
||||
along just as all the other fields.
|
||||
@ -383,7 +383,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
<input type=submit name="press" value="OK">
|
||||
</form>
|
||||
|
||||
To post this with curl, you won't have to think about if the fields are
|
||||
To POST this with curl, you won't have to think about if the fields are
|
||||
hidden or not. To curl they're all the same:
|
||||
|
||||
curl --data "birthyear=1905&press=OK&person=daniel" [URL]
|
||||
@ -405,7 +405,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
5.1 PUT
|
||||
|
||||
The perhaps best way to upload data to a HTTP server is to use PUT. Then
|
||||
Perhaps the best way to upload data to a HTTP server is to use PUT. Then
|
||||
again, this of course requires that someone put a program or script on the
|
||||
server end that knows how to receive a HTTP PUT stream.
|
||||
|
||||
@ -446,7 +446,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
If your proxy requires the authentication to be done using the NTLM method,
|
||||
use --proxy-ntlm, if it requires Digest use --proxy-digest.
|
||||
|
||||
If you use any one these user+password options but leave out the password
|
||||
If you use any one of these user+password options but leave out the password
|
||||
part, curl will prompt for the password interactively.
|
||||
|
||||
6.4 Hiding credentials
|
||||
@ -508,7 +508,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
to redirect is Location:.
|
||||
|
||||
Curl does not follow Location: headers by default, but will simply display
|
||||
such pages in the same manner it display all HTTP replies. It does however
|
||||
such pages in the same manner it displays all HTTP replies. It does however
|
||||
feature an option that will make it attempt to follow the Location: pointers.
|
||||
|
||||
To tell curl to follow a Location:
|
||||
@ -562,7 +562,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
(Take note that the --cookie-jar option described below is a better way to
|
||||
store cookies.)
|
||||
|
||||
Curl has a full blown cookie parsing engine built-in that comes to use if you
|
||||
Curl has a full blown cookie parsing engine built-in that comes in use if you
|
||||
want to reconnect to a server and use cookies that were stored from a
|
||||
previous connection (or hand-crafted manually to fool the server into
|
||||
believing you had a previous connection). To use previously stored cookies,
|
||||
@ -592,7 +592,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
10.1 HTTPS is HTTP secure
|
||||
|
||||
There are a few ways to do secure HTTP transfers. The by far most common
|
||||
There are a few ways to do secure HTTP transfers. By far the most common
|
||||
protocol for doing this is what is generally known as HTTPS, HTTP over
|
||||
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.
|
||||
@ -628,7 +628,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
More about server certificate verification and ca cert bundles can be read
|
||||
in the SSLCERTS document, available online here:
|
||||
|
||||
http://curl.haxx.se/docs/sslcerts.html
|
||||
https://curl.haxx.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:
|
||||
@ -680,7 +680,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
12.1 Some login tricks
|
||||
|
||||
While not strictly just HTTP related, it still cause a lot of people problems
|
||||
While not strictly just HTTP related, it still causes a lot of people problems
|
||||
so here's the executive run-down of how the vast majority of all login forms
|
||||
work and how to login to them using curl.
|
||||
|
||||
@ -693,7 +693,7 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
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 features 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 isn't enough to let you repeat the behavior
|
||||
@ -755,4 +755,4 @@ The Art Of Scripting HTTP Requests Using Curl
|
||||
|
||||
14.2 Sites
|
||||
|
||||
http://curl.haxx.se is the home of the cURL project
|
||||
https://curl.haxx.se is the home of the curl project
|
||||
|
12
curl/docs/cmdline-opts/CMakeLists.txt
Normal file
12
curl/docs/cmdline-opts/CMakeLists.txt
Normal file
@ -0,0 +1,12 @@
|
||||
set(MANPAGE "${CURL_BINARY_DIR}/docs/curl.1")
|
||||
|
||||
# Load DPAGES and OTHERPAGES from shared file
|
||||
transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
|
||||
include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
|
||||
|
||||
add_custom_command(OUTPUT "${MANPAGE}"
|
||||
COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/gen.pl" mainpage "${CMAKE_CURRENT_SOURCE_DIR}" > "${MANPAGE}"
|
||||
DEPENDS ${DPAGES} ${OTHERPAGES}
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target(generate-curl.1 DEPENDS "${MANPAGE}")
|
52
curl/docs/cmdline-opts/MANPAGE.md
Normal file
52
curl/docs/cmdline-opts/MANPAGE.md
Normal file
@ -0,0 +1,52 @@
|
||||
# curl man page generator
|
||||
|
||||
This is the curl man page generator. It generates a single nroff man page
|
||||
output from the set of sources files in this directory.
|
||||
|
||||
There is one source file for each supported command line option. The format is
|
||||
described below.
|
||||
|
||||
## Option files
|
||||
|
||||
Each command line option is described in a file named `<long name>.d`, where
|
||||
option name is written without any prefixing dashes. Like the file name for
|
||||
the -v, --verbose option is named `verbose.d`.
|
||||
|
||||
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)
|
||||
Arg: (the argument the option takes)
|
||||
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)
|
||||
Mutexed: (space separated list of options this overrides, no dashes)
|
||||
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)
|
||||
--- (end of meta-data)
|
||||
|
||||
### Body
|
||||
|
||||
The body of the description. Only refer to options with their long form option
|
||||
version, like --verbose. The output generator will replace such with the
|
||||
correct markup that shows both short and long version.
|
||||
|
||||
## Header
|
||||
|
||||
`page-header` is the nroff formatted file that will be output before the
|
||||
generated options output for the master man page.
|
||||
|
||||
## Generate
|
||||
|
||||
`./gen.pl mainpage`
|
||||
|
||||
This command outputs a single huge nroff file, meant to become `curl.1`. The
|
||||
full curl man page.
|
||||
|
||||
`./gen.pl listhelp`
|
||||
|
||||
Generates a full `curl --help` output for all known command line options.
|
34
curl/docs/cmdline-opts/Makefile.am
Normal file
34
curl/docs/cmdline-opts/Makefile.am
Normal file
@ -0,0 +1,34 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software 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.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||
|
||||
MANPAGE = $(top_builddir)/docs/curl.1
|
||||
|
||||
include Makefile.inc
|
||||
|
||||
EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt
|
||||
|
||||
all: $(MANPAGE)
|
||||
|
||||
$(MANPAGE): $(DPAGES) $(OTHERPAGES) Makefile.inc
|
||||
@PERL@ $(srcdir)/gen.pl mainpage $(srcdir) > $(MANPAGE)
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.16.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -13,8 +13,42 @@
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software 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.
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# Shared between Makefile.am and CMakeLists.txt
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -77,11 +111,10 @@ PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = packages/AIX/RPM
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(srcdir)/curl.spec.in README
|
||||
subdir = docs/cmdline-opts
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
|
||||
$(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/m4/curl-confopts.m4 \
|
||||
$(top_srcdir)/m4/curl-functions.m4 \
|
||||
$(top_srcdir)/m4/curl-openssl.m4 \
|
||||
@ -100,10 +133,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
|
||||
$(top_builddir)/include/curl/curlbuild.h
|
||||
CONFIG_CLEAN_FILES = curl.spec
|
||||
CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
@ -117,6 +150,8 @@ AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
depcomp =
|
||||
am__maybe_remake_depfiles =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
@ -125,11 +160,13 @@ am__can_run_installinfo = \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AR_FLAGS = @AR_FLAGS@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@ -165,7 +202,9 @@ 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_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@ -179,11 +218,15 @@ ENABLE_SHARED = @ENABLE_SHARED@
|
||||
ENABLE_STATIC = @ENABLE_STATIC@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
|
||||
GCOV = @GCOV@
|
||||
GREP = @GREP@
|
||||
HAVE_BROTLI = @HAVE_BROTLI@
|
||||
HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@
|
||||
HAVE_LDAP_SSL = @HAVE_LDAP_SSL@
|
||||
HAVE_LIBZ = @HAVE_LIBZ@
|
||||
HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@
|
||||
HAVE_PROTO_BSDSOCKET_H = @HAVE_PROTO_BSDSOCKET_H@
|
||||
IDN_ENABLED = @IDN_ENABLED@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
@ -191,6 +234,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
IPV6_ENABLED = @IPV6_ENABLED@
|
||||
LCOV = @LCOV@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
@ -203,6 +247,7 @@ LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
@ -235,29 +280,33 @@ REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SSL_BACKENDS = @SSL_BACKENDS@
|
||||
SSL_ENABLED = @SSL_ENABLED@
|
||||
SSL_LIBS = @SSL_LIBS@
|
||||
STRIP = @STRIP@
|
||||
SUPPORT_FEATURES = @SUPPORT_FEATURES@
|
||||
SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
|
||||
USE_ARES = @USE_ARES@
|
||||
USE_AXTLS = @USE_AXTLS@
|
||||
USE_CYASSL = @USE_CYASSL@
|
||||
USE_DARWINSSL = @USE_DARWINSSL@
|
||||
USE_GNUTLS = @USE_GNUTLS@
|
||||
USE_GNUTLS_NETTLE = @USE_GNUTLS_NETTLE@
|
||||
USE_LIBRTMP = @USE_LIBRTMP@
|
||||
USE_LIBSSH = @USE_LIBSSH@
|
||||
USE_LIBSSH2 = @USE_LIBSSH2@
|
||||
USE_MBEDTLS = @USE_MBEDTLS@
|
||||
USE_MESALINK = @USE_MESALINK@
|
||||
USE_NGHTTP2 = @USE_NGHTTP2@
|
||||
USE_NSS = @USE_NSS@
|
||||
USE_OPENLDAP = @USE_OPENLDAP@
|
||||
USE_POLARSSL = @USE_POLARSSL@
|
||||
USE_SCHANNEL = @USE_SCHANNEL@
|
||||
USE_SECTRANSP = @USE_SECTRANSP@
|
||||
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
|
||||
USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
|
||||
VERSION = @VERSION@
|
||||
VERSIONNUM = @VERSIONNUM@
|
||||
ZLIB_LIBS = @ZLIB_LIBS@
|
||||
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
@ -303,6 +352,7 @@ pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
@ -312,11 +362,217 @@ target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = README curl.spec.in
|
||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||
MANPAGE = $(top_builddir)/docs/curl.1
|
||||
DPAGES = \
|
||||
abstract-unix-socket.d \
|
||||
alt-svc.d \
|
||||
anyauth.d \
|
||||
append.d basic.d \
|
||||
cacert.d capath.d \
|
||||
cert-status.d \
|
||||
cert-type.d \
|
||||
cert.d \
|
||||
ciphers.d \
|
||||
compressed-ssh.d \
|
||||
compressed.d \
|
||||
config.d \
|
||||
connect-timeout.d \
|
||||
connect-to.d \
|
||||
continue-at.d \
|
||||
cookie-jar.d \
|
||||
cookie.d \
|
||||
create-dirs.d \
|
||||
crlf.d crlfile.d \
|
||||
data-ascii.d \
|
||||
data-binary.d \
|
||||
data-urlencode.d \
|
||||
data.d data-raw.d \
|
||||
delegation.d \
|
||||
digest.d \
|
||||
disable-eprt.d \
|
||||
disable-epsv.d \
|
||||
disable.d \
|
||||
disallow-username-in-url.d \
|
||||
dns-interface.d \
|
||||
dns-ipv4-addr.d \
|
||||
dns-ipv6-addr.d \
|
||||
dns-servers.d \
|
||||
doh-url.d \
|
||||
dump-header.d \
|
||||
egd-file.d \
|
||||
engine.d \
|
||||
expect100-timeout.d \
|
||||
fail-early.d \
|
||||
fail.d \
|
||||
false-start.d \
|
||||
form-string.d \
|
||||
form.d \
|
||||
ftp-account.d \
|
||||
ftp-alternative-to-user.d \
|
||||
ftp-create-dirs.d \
|
||||
ftp-method.d \
|
||||
ftp-pasv.d \
|
||||
ftp-port.d \
|
||||
ftp-pret.d \
|
||||
ftp-skip-pasv-ip.d \
|
||||
ftp-ssl-ccc-mode.d \
|
||||
ftp-ssl-ccc.d \
|
||||
ftp-ssl-control.d \
|
||||
get.d globoff.d \
|
||||
happy-eyeballs-timeout-ms.d \
|
||||
haproxy-protocol.d \
|
||||
head.d header.d \
|
||||
help.d \
|
||||
hostpubmd5.d \
|
||||
http0.9.d \
|
||||
http1.0.d \
|
||||
http1.1.d http2.d \
|
||||
http2-prior-knowledge.d \
|
||||
ignore-content-length.d \
|
||||
include.d \
|
||||
insecure.d \
|
||||
interface.d \
|
||||
ipv4.d ipv6.d \
|
||||
junk-session-cookies.d \
|
||||
keepalive-time.d \
|
||||
key.d key-type.d \
|
||||
krb.d libcurl.d \
|
||||
limit-rate.d \
|
||||
list-only.d \
|
||||
local-port.d \
|
||||
location-trusted.d \
|
||||
location.d \
|
||||
login-options.d \
|
||||
mail-auth.d \
|
||||
mail-from.d \
|
||||
mail-rcpt.d \
|
||||
manual.d \
|
||||
max-filesize.d \
|
||||
max-redirs.d \
|
||||
max-time.d \
|
||||
metalink.d \
|
||||
negotiate.d \
|
||||
netrc-file.d \
|
||||
netrc-optional.d \
|
||||
netrc.d \
|
||||
next.d no-alpn.d \
|
||||
no-buffer.d \
|
||||
no-keepalive.d \
|
||||
no-npn.d \
|
||||
no-sessionid.d \
|
||||
noproxy.d \
|
||||
ntlm.d ntlm-wb.d \
|
||||
oauth2-bearer.d \
|
||||
output.d pass.d \
|
||||
path-as-is.d \
|
||||
pinnedpubkey.d \
|
||||
post301.d \
|
||||
post302.d \
|
||||
post303.d \
|
||||
preproxy.d \
|
||||
progress-bar.d \
|
||||
proto-default.d \
|
||||
proto-redir.d \
|
||||
proto.d \
|
||||
proxy-anyauth.d \
|
||||
proxy-basic.d \
|
||||
proxy-cacert.d \
|
||||
proxy-capath.d \
|
||||
proxy-cert-type.d \
|
||||
proxy-cert.d \
|
||||
proxy-ciphers.d \
|
||||
proxy-crlfile.d \
|
||||
proxy-digest.d \
|
||||
proxy-header.d \
|
||||
proxy-insecure.d \
|
||||
proxy-key-type.d \
|
||||
proxy-key.d \
|
||||
proxy-negotiate.d \
|
||||
proxy-ntlm.d \
|
||||
proxy-pass.d \
|
||||
proxy-pinnedpubkey.d \
|
||||
proxy-service-name.d \
|
||||
proxy-ssl-allow-beast.d \
|
||||
proxy-tls13-ciphers.d \
|
||||
proxy-tlsauthtype.d \
|
||||
proxy-tlspassword.d \
|
||||
proxy-tlsuser.d \
|
||||
proxy-tlsv1.d \
|
||||
proxy-user.d \
|
||||
proxy.d \
|
||||
proxy1.0.d \
|
||||
proxytunnel.d \
|
||||
pubkey.d quote.d \
|
||||
random-file.d \
|
||||
range.d raw.d \
|
||||
referer.d \
|
||||
remote-header-name.d \
|
||||
remote-name-all.d \
|
||||
remote-name.d \
|
||||
remote-time.d \
|
||||
request-target.d \
|
||||
request.d \
|
||||
resolve.d \
|
||||
retry-connrefused.d \
|
||||
retry-delay.d \
|
||||
retry-max-time.d \
|
||||
retry.d \
|
||||
sasl-ir.d \
|
||||
service-name.d \
|
||||
show-error.d \
|
||||
silent.d \
|
||||
socks4.d socks5.d \
|
||||
socks4a.d \
|
||||
socks5-basic.d \
|
||||
socks5-gssapi-nec.d \
|
||||
socks5-gssapi-service.d \
|
||||
socks5-gssapi.d \
|
||||
socks5-hostname.d \
|
||||
speed-limit.d \
|
||||
speed-time.d \
|
||||
ssl-allow-beast.d \
|
||||
ssl-no-revoke.d \
|
||||
ssl-reqd.d \
|
||||
ssl.d \
|
||||
sslv2.d sslv3.d \
|
||||
stderr.d \
|
||||
styled-output.d \
|
||||
suppress-connect-headers.d \
|
||||
tcp-fastopen.d \
|
||||
tcp-nodelay.d \
|
||||
telnet-option.d \
|
||||
tftp-blksize.d \
|
||||
tftp-no-options.d \
|
||||
time-cond.d \
|
||||
tls-max.d \
|
||||
tls13-ciphers.d \
|
||||
tlsauthtype.d \
|
||||
tlspassword.d \
|
||||
tlsuser.d \
|
||||
tlsv1.0.d \
|
||||
tlsv1.1.d \
|
||||
tlsv1.2.d \
|
||||
tlsv1.3.d tlsv1.d \
|
||||
tr-encoding.d \
|
||||
trace-ascii.d \
|
||||
trace-time.d \
|
||||
trace.d \
|
||||
unix-socket.d \
|
||||
upload-file.d \
|
||||
url.d use-ascii.d \
|
||||
user-agent.d \
|
||||
user.d verbose.d \
|
||||
version.d \
|
||||
write-out.d \
|
||||
xattr.d
|
||||
|
||||
OTHERPAGES = page-footer page-header
|
||||
EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
@ -325,18 +581,18 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/AIX/RPM/Makefile'; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/cmdline-opts/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign packages/AIX/RPM/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
$(AUTOMAKE) --foreign docs/cmdline-opts/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
$(srcdir)/Makefile.inc $(am__empty):
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
@ -346,8 +602,6 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
curl.spec: $(top_builddir)/config.status $(srcdir)/curl.spec.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -361,7 +615,10 @@ ctags CTAGS:
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
@ -505,6 +762,13 @@ uninstall-am:
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
all: $(MANPAGE)
|
||||
|
||||
$(MANPAGE): $(DPAGES) $(OTHERPAGES) Makefile.inc
|
||||
@PERL@ $(srcdir)/gen.pl mainpage $(srcdir) > $(MANPAGE)
|
||||
|
||||
# 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.
|
206
curl/docs/cmdline-opts/Makefile.inc
Normal file
206
curl/docs/cmdline-opts/Makefile.inc
Normal file
@ -0,0 +1,206 @@
|
||||
# Shared between Makefile.am and CMakeLists.txt
|
||||
|
||||
DPAGES = \
|
||||
abstract-unix-socket.d \
|
||||
alt-svc.d \
|
||||
anyauth.d \
|
||||
append.d basic.d \
|
||||
cacert.d capath.d \
|
||||
cert-status.d \
|
||||
cert-type.d \
|
||||
cert.d \
|
||||
ciphers.d \
|
||||
compressed-ssh.d \
|
||||
compressed.d \
|
||||
config.d \
|
||||
connect-timeout.d \
|
||||
connect-to.d \
|
||||
continue-at.d \
|
||||
cookie-jar.d \
|
||||
cookie.d \
|
||||
create-dirs.d \
|
||||
crlf.d crlfile.d \
|
||||
data-ascii.d \
|
||||
data-binary.d \
|
||||
data-urlencode.d \
|
||||
data.d data-raw.d \
|
||||
delegation.d \
|
||||
digest.d \
|
||||
disable-eprt.d \
|
||||
disable-epsv.d \
|
||||
disable.d \
|
||||
disallow-username-in-url.d \
|
||||
dns-interface.d \
|
||||
dns-ipv4-addr.d \
|
||||
dns-ipv6-addr.d \
|
||||
dns-servers.d \
|
||||
doh-url.d \
|
||||
dump-header.d \
|
||||
egd-file.d \
|
||||
engine.d \
|
||||
expect100-timeout.d \
|
||||
fail-early.d \
|
||||
fail.d \
|
||||
false-start.d \
|
||||
form-string.d \
|
||||
form.d \
|
||||
ftp-account.d \
|
||||
ftp-alternative-to-user.d \
|
||||
ftp-create-dirs.d \
|
||||
ftp-method.d \
|
||||
ftp-pasv.d \
|
||||
ftp-port.d \
|
||||
ftp-pret.d \
|
||||
ftp-skip-pasv-ip.d \
|
||||
ftp-ssl-ccc-mode.d \
|
||||
ftp-ssl-ccc.d \
|
||||
ftp-ssl-control.d \
|
||||
get.d globoff.d \
|
||||
happy-eyeballs-timeout-ms.d \
|
||||
haproxy-protocol.d \
|
||||
head.d header.d \
|
||||
help.d \
|
||||
hostpubmd5.d \
|
||||
http0.9.d \
|
||||
http1.0.d \
|
||||
http1.1.d http2.d \
|
||||
http2-prior-knowledge.d \
|
||||
ignore-content-length.d \
|
||||
include.d \
|
||||
insecure.d \
|
||||
interface.d \
|
||||
ipv4.d ipv6.d \
|
||||
junk-session-cookies.d \
|
||||
keepalive-time.d \
|
||||
key.d key-type.d \
|
||||
krb.d libcurl.d \
|
||||
limit-rate.d \
|
||||
list-only.d \
|
||||
local-port.d \
|
||||
location-trusted.d \
|
||||
location.d \
|
||||
login-options.d \
|
||||
mail-auth.d \
|
||||
mail-from.d \
|
||||
mail-rcpt.d \
|
||||
manual.d \
|
||||
max-filesize.d \
|
||||
max-redirs.d \
|
||||
max-time.d \
|
||||
metalink.d \
|
||||
negotiate.d \
|
||||
netrc-file.d \
|
||||
netrc-optional.d \
|
||||
netrc.d \
|
||||
next.d no-alpn.d \
|
||||
no-buffer.d \
|
||||
no-keepalive.d \
|
||||
no-npn.d \
|
||||
no-sessionid.d \
|
||||
noproxy.d \
|
||||
ntlm.d ntlm-wb.d \
|
||||
oauth2-bearer.d \
|
||||
output.d pass.d \
|
||||
path-as-is.d \
|
||||
pinnedpubkey.d \
|
||||
post301.d \
|
||||
post302.d \
|
||||
post303.d \
|
||||
preproxy.d \
|
||||
progress-bar.d \
|
||||
proto-default.d \
|
||||
proto-redir.d \
|
||||
proto.d \
|
||||
proxy-anyauth.d \
|
||||
proxy-basic.d \
|
||||
proxy-cacert.d \
|
||||
proxy-capath.d \
|
||||
proxy-cert-type.d \
|
||||
proxy-cert.d \
|
||||
proxy-ciphers.d \
|
||||
proxy-crlfile.d \
|
||||
proxy-digest.d \
|
||||
proxy-header.d \
|
||||
proxy-insecure.d \
|
||||
proxy-key-type.d \
|
||||
proxy-key.d \
|
||||
proxy-negotiate.d \
|
||||
proxy-ntlm.d \
|
||||
proxy-pass.d \
|
||||
proxy-pinnedpubkey.d \
|
||||
proxy-service-name.d \
|
||||
proxy-ssl-allow-beast.d \
|
||||
proxy-tls13-ciphers.d \
|
||||
proxy-tlsauthtype.d \
|
||||
proxy-tlspassword.d \
|
||||
proxy-tlsuser.d \
|
||||
proxy-tlsv1.d \
|
||||
proxy-user.d \
|
||||
proxy.d \
|
||||
proxy1.0.d \
|
||||
proxytunnel.d \
|
||||
pubkey.d quote.d \
|
||||
random-file.d \
|
||||
range.d raw.d \
|
||||
referer.d \
|
||||
remote-header-name.d \
|
||||
remote-name-all.d \
|
||||
remote-name.d \
|
||||
remote-time.d \
|
||||
request-target.d \
|
||||
request.d \
|
||||
resolve.d \
|
||||
retry-connrefused.d \
|
||||
retry-delay.d \
|
||||
retry-max-time.d \
|
||||
retry.d \
|
||||
sasl-ir.d \
|
||||
service-name.d \
|
||||
show-error.d \
|
||||
silent.d \
|
||||
socks4.d socks5.d \
|
||||
socks4a.d \
|
||||
socks5-basic.d \
|
||||
socks5-gssapi-nec.d \
|
||||
socks5-gssapi-service.d \
|
||||
socks5-gssapi.d \
|
||||
socks5-hostname.d \
|
||||
speed-limit.d \
|
||||
speed-time.d \
|
||||
ssl-allow-beast.d \
|
||||
ssl-no-revoke.d \
|
||||
ssl-reqd.d \
|
||||
ssl.d \
|
||||
sslv2.d sslv3.d \
|
||||
stderr.d \
|
||||
styled-output.d \
|
||||
suppress-connect-headers.d \
|
||||
tcp-fastopen.d \
|
||||
tcp-nodelay.d \
|
||||
telnet-option.d \
|
||||
tftp-blksize.d \
|
||||
tftp-no-options.d \
|
||||
time-cond.d \
|
||||
tls-max.d \
|
||||
tls13-ciphers.d \
|
||||
tlsauthtype.d \
|
||||
tlspassword.d \
|
||||
tlsuser.d \
|
||||
tlsv1.0.d \
|
||||
tlsv1.1.d \
|
||||
tlsv1.2.d \
|
||||
tlsv1.3.d tlsv1.d \
|
||||
tr-encoding.d \
|
||||
trace-ascii.d \
|
||||
trace-time.d \
|
||||
trace.d \
|
||||
unix-socket.d \
|
||||
upload-file.d \
|
||||
url.d use-ascii.d \
|
||||
user-agent.d \
|
||||
user.d verbose.d \
|
||||
version.d \
|
||||
write-out.d \
|
||||
xattr.d
|
||||
|
||||
OTHERPAGES = page-footer page-header
|
9
curl/docs/cmdline-opts/abstract-unix-socket.d
Normal file
9
curl/docs/cmdline-opts/abstract-unix-socket.d
Normal file
@ -0,0 +1,9 @@
|
||||
Long: abstract-unix-socket
|
||||
Arg: <path>
|
||||
Help: Connect via abstract Unix domain socket
|
||||
Added: 7.53.0
|
||||
Protocols: HTTP
|
||||
---
|
||||
Connect through an abstract Unix domain socket, instead of using the network.
|
||||
Note: netstat shows the path of an abstract socket prefixed with '@', however
|
||||
the <path> argument should not have this leading character.
|
17
curl/docs/cmdline-opts/alt-svc.d
Normal file
17
curl/docs/cmdline-opts/alt-svc.d
Normal file
@ -0,0 +1,17 @@
|
||||
Long: alt-svc
|
||||
Arg: <file name>
|
||||
Protocols: HTTPS
|
||||
Help: Enable alt-svc with this cache file
|
||||
Added: 7.64.1
|
||||
---
|
||||
WARNING: this option is experiemental. Do not use in production.
|
||||
|
||||
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,
|
||||
the cache will be saved to the file name again if it has been modified.
|
||||
|
||||
Specifiy a "" file name (zero length) to avoid loading/saving and make curl
|
||||
just handle the cache in memory.
|
||||
|
||||
If this option is used several times, curl will load contents from all the
|
||||
files but the the last one will be used for saving.
|
17
curl/docs/cmdline-opts/anyauth.d
Normal file
17
curl/docs/cmdline-opts/anyauth.d
Normal file
@ -0,0 +1,17 @@
|
||||
Long: anyauth
|
||||
Help: Pick any authentication method
|
||||
Protocols: HTTP
|
||||
See-also: proxy-anyauth basic digest
|
||||
---
|
||||
Tells curl to figure out authentication method by itself, and use the most
|
||||
secure one the remote site claims to support. This is done by first doing a
|
||||
request and checking the response-headers, thus possibly inducing an extra
|
||||
network round-trip. This is used instead of setting a specific authentication
|
||||
method, which you can do with --basic, --digest, --ntlm, and --negotiate.
|
||||
|
||||
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 --user.
|
8
curl/docs/cmdline-opts/append.d
Normal file
8
curl/docs/cmdline-opts/append.d
Normal file
@ -0,0 +1,8 @@
|
||||
Short: a
|
||||
Long: append
|
||||
Help: Append to target file when uploading
|
||||
Protocols: FTP SFTP
|
||||
---
|
||||
When used in an upload, this makes curl append to the target file instead of
|
||||
overwriting it. If the remote file doesn't exist, it will be created. Note
|
||||
that this flag is ignored by some SFTP servers (including OpenSSH).
|
11
curl/docs/cmdline-opts/basic.d
Normal file
11
curl/docs/cmdline-opts/basic.d
Normal file
@ -0,0 +1,11 @@
|
||||
Long: basic
|
||||
Help: Use HTTP Basic Authentication
|
||||
See-also: proxy-basic
|
||||
Protocols: HTTP
|
||||
---
|
||||
Tells curl to use HTTP Basic authentication with the remote host. This is the
|
||||
default and this option is usually pointless, unless you use it to override a
|
||||
previously set option that sets a different authentication method (such as
|
||||
--ntlm, --digest, or --negotiate).
|
||||
|
||||
Used together with --user.
|
33
curl/docs/cmdline-opts/cacert.d
Normal file
33
curl/docs/cmdline-opts/cacert.d
Normal file
@ -0,0 +1,33 @@
|
||||
Long: cacert
|
||||
Arg: <file>
|
||||
Help: CA certificate to verify peer against
|
||||
Protocols: TLS
|
||||
---
|
||||
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
|
||||
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 '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.
|
||||
|
||||
The windows version of curl will automatically look for a CA certs file named
|
||||
\'curl-ca-bundle.crt\', either in the same directory as curl.exe, or in the
|
||||
Current Working Directory, or in any folder along your PATH.
|
||||
|
||||
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.
|
||||
|
||||
(iOS and macOS only) If curl is built against Secure Transport, then this
|
||||
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'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' store of
|
||||
root certificates (the default for Schannel).
|
||||
|
||||
If this option is used several times, the last one will be used.
|
15
curl/docs/cmdline-opts/capath.d
Normal file
15
curl/docs/cmdline-opts/capath.d
Normal file
@ -0,0 +1,15 @@
|
||||
Long: capath
|
||||
Arg: <dir>
|
||||
Help: CA directory to verify peer against
|
||||
Protocols: 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
|
||||
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.
|
13
curl/docs/cmdline-opts/cert-status.d
Normal file
13
curl/docs/cmdline-opts/cert-status.d
Normal file
@ -0,0 +1,13 @@
|
||||
Long: cert-status
|
||||
Protocols: TLS
|
||||
Added: 7.41.0
|
||||
Help: Verify the status of the server certificate
|
||||
---
|
||||
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.
|
||||
|
||||
This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
|
10
curl/docs/cmdline-opts/cert-type.d
Normal file
10
curl/docs/cmdline-opts/cert-type.d
Normal file
@ -0,0 +1,10 @@
|
||||
Long: cert-type
|
||||
Protocols: TLS
|
||||
Arg: <type>
|
||||
Help: Certificate file type
|
||||
See-also: cert key key-type
|
||||
---
|
||||
Tells curl what type the provided client certificate is using. PEM, DER, ENG
|
||||
and P12 are recognized types. If not specified, PEM is assumed.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user