37#if (defined(__GNUC__) && \
38 ((__GNUC__ > 12) || ((__GNUC__ == 12) && (__GNUC_MINOR__ >= 1))) || \
39 (defined(__clang__) && __clang_major__ >= 3) || \
40 defined(__IAR_SYSTEMS_ICC__)) && \
41 !defined(__INTEL_COMPILER) && \
42 !defined(CURL_DISABLE_DEPRECATION) && !defined(BUILDING_LIBCURL)
43#define CURL_DEPRECATED(version, message) \
44 __attribute__((deprecated("since " # version ". " message)))
45#if defined(__IAR_SYSTEMS_ICC__)
46#define CURL_IGNORE_DEPRECATION(statements) \
47 _Pragma("diag_suppress=Pe1444") \
49 _Pragma("diag_default=Pe1444")
51#define CURL_IGNORE_DEPRECATION(statements) \
52 _Pragma("GCC diagnostic push") \
53 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
55 _Pragma("GCC diagnostic pop")
58#define CURL_DEPRECATED(version, message)
59#define CURL_IGNORE_DEPRECATION(statements) statements
68#if defined(__FreeBSD__) || defined(__MidnightBSD__)
77#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
78#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
79 defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
90#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
91 defined(__minix) || defined(__INTEGRITY) || \
92 defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
93 defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
94 (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
95 (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
96 defined(__sun__) || defined(__serenity__) || defined(__vxworks__)
97#include <sys/select.h>
100#if !defined(_WIN32) && !defined(_WIN32_WCE)
101#include <sys/socket.h>
109#ifndef __has_declspec_attribute
110# define __has_declspec_attribute(x) 0
126#elif defined(_WIN32) || \
127 (__has_declspec_attribute(dllexport) && \
128 __has_declspec_attribute(dllimport))
129# if defined(BUILDING_LIBCURL)
130# define CURL_EXTERN __declspec(dllexport)
132# define CURL_EXTERN __declspec(dllimport)
134#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)
135# define CURL_EXTERN CURL_EXTERN_SYMBOL
140#ifndef curl_socket_typedef
142#if defined(_WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H)
144#define CURL_SOCKET_BAD INVALID_SOCKET
147#define CURL_SOCKET_BAD -1
149#define curl_socket_typedef
172#define CURLSSLBACKEND_AWSLC CURLSSLBACKEND_OPENSSL
173#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL
174#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
177#define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL
178#define CURLSSLBACKEND_DARWINSSL CURLSSLBACKEND_SECURETRANSPORT
197#define CURL_HTTPPOST_FILENAME (1<<0)
199#define CURL_HTTPPOST_READFILE (1<<1)
201#define CURL_HTTPPOST_PTRNAME (1<<2)
203#define CURL_HTTPPOST_PTRCONTENTS (1<<3)
205#define CURL_HTTPPOST_BUFFER (1<<4)
207#define CURL_HTTPPOST_PTRBUFFER (1<<5)
210#define CURL_HTTPPOST_CALLBACK (1<<6)
212#define CURL_HTTPPOST_LARGE (1<<7)
227#define CURL_PROGRESSFUNC_CONTINUE 0x10000001
246#ifndef CURL_MAX_READ_SIZE
248#define CURL_MAX_READ_SIZE (10*1024*1024)
251#ifndef CURL_MAX_WRITE_SIZE
258#define CURL_MAX_WRITE_SIZE 16384
261#ifndef CURL_MAX_HTTP_HEADER
265#define CURL_MAX_HTTP_HEADER (100*1024)
270#define CURL_WRITEFUNC_PAUSE 0x10000001
274#define CURL_WRITEFUNC_ERROR 0xFFFFFFFF
283 void *reserved,
void *userdata);
299#define CURLFINFOFLAG_KNOWN_FILENAME (1<<0)
300#define CURLFINFOFLAG_KNOWN_FILETYPE (1<<1)
301#define CURLFINFOFLAG_KNOWN_TIME (1<<2)
302#define CURLFINFOFLAG_KNOWN_PERM (1<<3)
303#define CURLFINFOFLAG_KNOWN_UID (1<<4)
304#define CURLFINFOFLAG_KNOWN_GID (1<<5)
305#define CURLFINFOFLAG_KNOWN_SIZE (1<<6)
306#define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7)
338#define CURL_CHUNK_BGN_FUNC_OK 0
339#define CURL_CHUNK_BGN_FUNC_FAIL 1
340#define CURL_CHUNK_BGN_FUNC_SKIP 2
350#define CURL_CHUNK_END_FUNC_OK 0
351#define CURL_CHUNK_END_FUNC_FAIL 1
362#define CURL_FNMATCHFUNC_MATCH 0
363#define CURL_FNMATCHFUNC_NOMATCH 1
364#define CURL_FNMATCHFUNC_FAIL 2
373#define CURL_SEEKFUNC_OK 0
374#define CURL_SEEKFUNC_FAIL 1
375#define CURL_SEEKFUNC_CANTSEEK 2
383#define CURL_READFUNC_ABORT 0x10000000
386#define CURL_READFUNC_PAUSE 0x10000001
390#define CURL_TRAILERFUNC_OK 0
393#define CURL_TRAILERFUNC_ABORT 1
411#define CURL_SOCKOPT_OK 0
412#define CURL_SOCKOPT_ERROR 1
414#define CURL_SOCKOPT_ALREADY_CONNECTED 2
427 struct sockaddr
addr;
455#ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS
462typedef void *(*curl_malloc_callback)(
size_t size);
464typedef void *(*curl_realloc_callback)(
void *ptr,
size_t size);
465typedef char *(*curl_strdup_callback)(
const char *str);
466typedef void *(*curl_calloc_callback)(
size_t nmemb,
size_t size);
468#define CURL_DID_MEMORY_FUNC_TYPEDEFS
492 char *conn_primary_ip,
494 int conn_primary_port,
495 int conn_local_port);
499#define CURL_PREREQFUNC_OK 0
502#define CURL_PREREQFUNC_ABORT 1
643#ifndef CURL_NO_OLDIES
647#define CURLE_FUNCTION_NOT_FOUND CURLE_OBSOLETE41
650#define CURLE_HTTP_POST_ERROR CURLE_OBSOLETE34
653#define CURLE_OBSOLETE16 CURLE_HTTP2
656#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
657#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
660#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING
661#define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY
664#define CURLE_SSL_CACERT CURLE_PEER_FAILED_VERIFICATION
667#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION
670#define CURLE_TELNET_OPTION_SYNTAX CURLE_SETOPT_OPTION_SYNTAX
674#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION
678#define CURLE_OBSOLETE CURLE_OBSOLETE50
679#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46
680#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44
681#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10
682#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16
683#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32
684#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29
685#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12
686#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20
687#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40
688#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24
689#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57
690#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN
692#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED
693#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE
694#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR
695#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL
696#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS
697#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR
698#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED
702#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT
703#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
704#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
705#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
706#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
707#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
708#define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62
709#define CURLE_CONV_REQD CURLE_OBSOLETE76
710#define CURLE_CONV_FAILED CURLE_OBSOLETE75
715#define CURLE_ALREADY_COMPLETE 99999
718#define CURLOPT_FILE CURLOPT_WRITEDATA
719#define CURLOPT_INFILE CURLOPT_READDATA
720#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA
724#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40
725#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72
726#define CURLOPT_OBSOLETE72 9999
727#define CURLOPT_OBSOLETE40 9999
817#define CURLAUTH_NONE ((unsigned long)0)
818#define CURLAUTH_BASIC (((unsigned long)1)<<0)
819#define CURLAUTH_DIGEST (((unsigned long)1)<<1)
820#define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2)
822#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE
824#define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE
825#define CURLAUTH_NTLM (((unsigned long)1)<<3)
826#define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4)
827#ifndef CURL_NO_OLDIES
829#define CURLAUTH_NTLM_WB (((unsigned long)1)<<5)
831#define CURLAUTH_BEARER (((unsigned long)1)<<6)
832#define CURLAUTH_AWS_SIGV4 (((unsigned long)1)<<7)
833#define CURLAUTH_ONLY (((unsigned long)1)<<31)
834#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE)
835#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))
837#define CURLSSH_AUTH_ANY ~0
838#define CURLSSH_AUTH_NONE 0
839#define CURLSSH_AUTH_PUBLICKEY (1<<0)
840#define CURLSSH_AUTH_PASSWORD (1<<1)
841#define CURLSSH_AUTH_HOST (1<<2)
842#define CURLSSH_AUTH_KEYBOARD (1<<3)
843#define CURLSSH_AUTH_AGENT (1<<4)
844#define CURLSSH_AUTH_GSSAPI (1<<5)
845#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY
847#define CURLGSSAPI_DELEGATION_NONE 0
848#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0)
849#define CURLGSSAPI_DELEGATION_FLAG (1<<1)
851#define CURL_ERROR_SIZE 256
924#define CURLSSLOPT_ALLOW_BEAST (1<<0)
928#define CURLSSLOPT_NO_REVOKE (1<<1)
932#define CURLSSLOPT_NO_PARTIALCHAIN (1<<2)
937#define CURLSSLOPT_REVOKE_BEST_EFFORT (1<<3)
941#define CURLSSLOPT_NATIVE_CA (1<<4)
945#define CURLSSLOPT_AUTO_CLIENT_CERT (1<<5)
948#define CURLSSLOPT_EARLYDATA (1<<6)
953#define CURL_HET_DEFAULT 200L
956#define CURL_UPKEEP_INTERVAL_DEFAULT 60000L
958#ifndef CURL_NO_OLDIES
964#define CURLFTPSSL_NONE CURLUSESSL_NONE
965#define CURLFTPSSL_TRY CURLUSESSL_TRY
966#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL
967#define CURLFTPSSL_ALL CURLUSESSL_ALL
968#define CURLFTPSSL_LAST CURLUSESSL_LAST
969#define curl_ftpssl curl_usessl
1009#define CURLHEADER_UNIFIED 0
1010#define CURLHEADER_SEPARATE (1<<0)
1013#define CURLALTSVC_READONLYFILE (1<<2)
1014#define CURLALTSVC_H1 (1<<3)
1015#define CURLALTSVC_H2 (1<<4)
1016#define CURLALTSVC_H3 (1<<5)
1046#define CURLHSTS_ENABLE (long)(1<<0)
1047#define CURLHSTS_READONLYFILE (long)(1<<1)
1051#define CURLPROTO_HTTP (1<<0)
1052#define CURLPROTO_HTTPS (1<<1)
1053#define CURLPROTO_FTP (1<<2)
1054#define CURLPROTO_FTPS (1<<3)
1055#define CURLPROTO_SCP (1<<4)
1056#define CURLPROTO_SFTP (1<<5)
1057#define CURLPROTO_TELNET (1<<6)
1058#define CURLPROTO_LDAP (1<<7)
1059#define CURLPROTO_LDAPS (1<<8)
1060#define CURLPROTO_DICT (1<<9)
1061#define CURLPROTO_FILE (1<<10)
1062#define CURLPROTO_TFTP (1<<11)
1063#define CURLPROTO_IMAP (1<<12)
1064#define CURLPROTO_IMAPS (1<<13)
1065#define CURLPROTO_POP3 (1<<14)
1066#define CURLPROTO_POP3S (1<<15)
1067#define CURLPROTO_SMTP (1<<16)
1068#define CURLPROTO_SMTPS (1<<17)
1069#define CURLPROTO_RTSP (1<<18)
1070#define CURLPROTO_RTMP (1<<19)
1071#define CURLPROTO_RTMPT (1<<20)
1072#define CURLPROTO_RTMPE (1<<21)
1073#define CURLPROTO_RTMPTE (1<<22)
1074#define CURLPROTO_RTMPS (1<<23)
1075#define CURLPROTO_RTMPTS (1<<24)
1076#define CURLPROTO_GOPHER (1<<25)
1077#define CURLPROTO_SMB (1<<26)
1078#define CURLPROTO_SMBS (1<<27)
1079#define CURLPROTO_MQTT (1<<28)
1080#define CURLPROTO_GOPHERS (1<<29)
1081#define CURLPROTO_ALL (~0)
1085#define CURLOPTTYPE_LONG 0
1086#define CURLOPTTYPE_OBJECTPOINT 10000
1087#define CURLOPTTYPE_FUNCTIONPOINT 20000
1088#define CURLOPTTYPE_OFF_T 30000
1089#define CURLOPTTYPE_BLOB 40000
1095#define CURLOPT(na,t,nu) na = t + nu
1096#define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
1101#define CURLOPTTYPE_STRINGPOINT CURLOPTTYPE_OBJECTPOINT
1104#define CURLOPTTYPE_SLISTPOINT CURLOPTTYPE_OBJECTPOINT
1107#define CURLOPTTYPE_CBPOINT CURLOPTTYPE_OBJECTPOINT
1110#define CURLOPTTYPE_VALUES CURLOPTTYPE_LONG
1211 7.56.0,
"Use CURLOPT_MIMEPOST"),
1301 7.12.1,
"Use CURLOPT_UPLOAD"),
1310 7.32.0,
"Use CURLOPT_XFERINFOFUNCTION"),
1315#define CURLOPT_PROGRESSDATA CURLOPT_XFERINFODATA
1377 7.84.0,
"Serves no purpose anymore"),
1381 7.84.0,
"Serves no purpose anymore"),
1437 7.11.1,
"Use CURLOPT_SHARE"),
1593 7.18.0,
"Use CURLOPT_SEEKFUNCTION"),
1595 7.18.0,
"Use CURLOPT_SEEKDATA"),
1636 7.82.0,
"Serves no purpose anymore"),
1642 7.82.0,
"Serves no purpose anymore"),
1649 7.82.0,
"Serves no purpose anymore"),
1752 7.49.0,
"Use CURLOPT_PROXY_SERVICE_NAME"),
1762 7.85.0,
"Use CURLOPT_PROTOCOLS_STR"),
1768 7.85.0,
"Use CURLOPT_REDIR_PROTOCOLS_STR"),
1915 7.86.0,
"Has no function"),
2234#ifndef CURL_NO_OLDIES
2241#define CURLOPT_POST301 CURLOPT_POSTREDIR
2246#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD
2247#define CURLOPT_FTPAPPEND CURLOPT_APPEND
2248#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY
2249#define CURLOPT_FTP_SSL CURLOPT_USE_SSL
2253#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
2254#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
2257#define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT
2260#define CURLOPT_MAIL_RCPT_ALLLOWFAILS CURLOPT_MAIL_RCPT_ALLOWFAILS
2264#undef CURLOPT_DNS_USE_GLOBAL_CACHE
2271#define CURL_IPRESOLVE_WHATEVER 0
2273#define CURL_IPRESOLVE_V4 1
2274#define CURL_IPRESOLVE_V6 2
2277#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
2303#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0
2336#define CURL_SSLVERSION_DEFAULT 0
2337#define CURL_SSLVERSION_TLSv1 1
2338#define CURL_SSLVERSION_SSLv2 2
2339#define CURL_SSLVERSION_SSLv3 3
2340#define CURL_SSLVERSION_TLSv1_0 4
2341#define CURL_SSLVERSION_TLSv1_1 5
2342#define CURL_SSLVERSION_TLSv1_2 6
2343#define CURL_SSLVERSION_TLSv1_3 7
2345#define CURL_SSLVERSION_LAST 8
2347#define CURL_SSLVERSION_MAX_NONE 0
2348#define CURL_SSLVERSION_MAX_DEFAULT (CURL_SSLVERSION_TLSv1 << 16)
2349#define CURL_SSLVERSION_MAX_TLSv1_0 (CURL_SSLVERSION_TLSv1_0 << 16)
2350#define CURL_SSLVERSION_MAX_TLSv1_1 (CURL_SSLVERSION_TLSv1_1 << 16)
2351#define CURL_SSLVERSION_MAX_TLSv1_2 (CURL_SSLVERSION_TLSv1_2 << 16)
2352#define CURL_SSLVERSION_MAX_TLSv1_3 (CURL_SSLVERSION_TLSv1_3 << 16)
2355#define CURL_SSLVERSION_MAX_LAST (CURL_SSLVERSION_LAST << 16)
2368#define CURL_REDIR_GET_ALL 0
2369#define CURL_REDIR_POST_301 1
2370#define CURL_REDIR_POST_302 2
2371#define CURL_REDIR_POST_303 4
2372#define CURL_REDIR_POST_ALL \
2373 (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303)
2386#define CURL_ZERO_TERMINATED ((size_t) -1)
2398#define CURLMIMEOPT_FORMESCAPE (1<<0)
2446 const char *filename);
2465 const char *encoding);
2475 const char *data,
size_t datasize);
2485 const char *filename);
2519 int take_ownership);
2527 CURLFORM_COPYCONTENTS
CURL_DEPRECATED(7.56.0,
"Use curl_mime_data()"),
2530 CURLFORM_FILECONTENT
CURL_DEPRECATED(7.56.0,
"Use curl_mime_data_cb()"),
2537 CURLFORM_BUFFERLENGTH
CURL_DEPRECATED(7.56.0,
"Use curl_mime_data()"),
2541 CURLFORM_FILENAME
CURL_DEPRECATED(7.56.0,
"Use curl_mime_filename()"),
2859#define CURLINFO_STRING 0x100000
2860#define CURLINFO_LONG 0x200000
2861#define CURLINFO_DOUBLE 0x300000
2862#define CURLINFO_SLIST 0x400000
2863#define CURLINFO_PTR 0x400000
2864#define CURLINFO_SOCKET 0x500000
2865#define CURLINFO_OFF_T 0x600000
2866#define CURLINFO_MASK 0x0fffff
2867#define CURLINFO_TYPEMASK 0xf00000
2877 CURLINFO_SIZE_UPLOAD
CURL_DEPRECATED(7.55.0,
"Use CURLINFO_SIZE_UPLOAD_T")
2897 CURLINFO_CONTENT_LENGTH_DOWNLOAD
2899 "Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T")
2902 CURLINFO_CONTENT_LENGTH_UPLOAD
2904 "Use CURLINFO_CONTENT_LENGTH_UPLOAD_T")
2969#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE
2983#define CURL_GLOBAL_SSL (1<<0)
2984#define CURL_GLOBAL_WIN32 (1<<1)
2985#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
2986#define CURL_GLOBAL_NOTHING 0
2987#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
2988#define CURL_GLOBAL_ACK_EINTR (1<<2)
3080#define CURLVERSION_NOW CURLVERSION_TWELFTH
3146#define CURL_VERSION_IPV6 (1<<0)
3147#define CURL_VERSION_KERBEROS4 (1<<1)
3149#define CURL_VERSION_SSL (1<<2)
3150#define CURL_VERSION_LIBZ (1<<3)
3151#define CURL_VERSION_NTLM (1<<4)
3152#define CURL_VERSION_GSSNEGOTIATE (1<<5)
3154#define CURL_VERSION_DEBUG (1<<6)
3155#define CURL_VERSION_ASYNCHDNS (1<<7)
3156#define CURL_VERSION_SPNEGO (1<<8)
3157#define CURL_VERSION_LARGEFILE (1<<9)
3158#define CURL_VERSION_IDN (1<<10)
3160#define CURL_VERSION_SSPI (1<<11)
3161#define CURL_VERSION_CONV (1<<12)
3162#define CURL_VERSION_CURLDEBUG (1<<13)
3163#define CURL_VERSION_TLSAUTH_SRP (1<<14)
3164#define CURL_VERSION_NTLM_WB (1<<15)
3166#define CURL_VERSION_HTTP2 (1<<16)
3167#define CURL_VERSION_GSSAPI (1<<17)
3168#define CURL_VERSION_KERBEROS5 (1<<18)
3169#define CURL_VERSION_UNIX_SOCKETS (1<<19)
3170#define CURL_VERSION_PSL (1<<20)
3172#define CURL_VERSION_HTTPS_PROXY (1<<21)
3173#define CURL_VERSION_MULTI_SSL (1<<22)
3174#define CURL_VERSION_BROTLI (1<<23)
3175#define CURL_VERSION_ALTSVC (1<<24)
3176#define CURL_VERSION_HTTP3 (1<<25)
3177#define CURL_VERSION_ZSTD (1<<26)
3178#define CURL_VERSION_UNICODE (1<<27)
3179#define CURL_VERSION_HSTS (1<<28)
3180#define CURL_VERSION_GSASL (1<<29)
3181#define CURL_VERSION_THREADSAFE (1<<30)
3226#define CURLPAUSE_RECV (1<<0)
3227#define CURLPAUSE_RECV_CONT (0)
3229#define CURLPAUSE_SEND (1<<2)
3230#define CURLPAUSE_SEND_CONT (0)
3232#define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND)
3233#define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)
3244 const char *session_key,
3245 const unsigned char *shmac,
3247 const unsigned char *sdata,
3254 const char *session_key,
3255 const unsigned char *shmac,
3257 const unsigned char *sdata,
3262 size_t earlydata_max);
3291#ifndef CURL_SKIP_INCLUDE_MPRINTF
3296#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
3297 ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
3298 !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)
3301#if defined(__STDC__) && (__STDC__ >= 1)
3305#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)
3306#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg)
3307#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
3308#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
@ CURL_LOCK_ACCESS_SINGLE
@ CURL_LOCK_ACCESS_SHARED
CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask)
CURL_EXTERN curl_mimepart * curl_mime_addpart(curl_mime *mime)
CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name)
#define CURLOPTTYPE_CBPOINT
#define CURLOPTTYPE_STRINGPOINT
#define CURL_DEPRECATED(version, message)
curl_socket_t(* curl_opensocket_callback)(void *clientp, curlsocktype purpose, struct curl_sockaddr *address)
int(* curl_fnmatch_callback)(void *ptr, const char *pattern, const char *string)
CURLSTScode(* curl_hstsread_callback)(CURL *easy, struct curl_hstsentry *e, void *userp)
@ CURLFTPMETHOD_SINGLECWD
void *(* curl_realloc_callback)(void *ptr, size_t size)
CURL_EXTERN curl_version_info_data * curl_version_info(CURLversion)
CURL_EXTERN const char * curl_share_strerror(CURLSHcode)
char *(* curl_strdup_callback)(const char *str)
CURL_EXTERN void curl_slist_free_all(struct curl_slist *list)
CURL_EXTERN char * curl_getenv(const char *variable)
CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *share)
void(* curl_lock_function)(CURL *handle, curl_lock_data data, curl_lock_access locktype, void *userptr)
CURL_EXTERN char * curl_unescape(const char *string, int length)
int(* curl_sshhostkeycallback)(void *clientp, int keytype, const char *key, size_t keylen)
CURL_EXTERN CURLSH * curl_share_init(void)
CURL_EXTERN void curl_global_cleanup(void)
CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part, const char *filename)
CURL_EXTERN char * curl_easy_escape(CURL *handle, const char *string, int length)
@ CURLSSLSET_UNKNOWN_BACKEND
@ CURL_RTSPREQ_SET_PARAMETER
@ CURL_RTSPREQ_GET_PARAMETER
CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n)
long(* curl_chunk_bgn_callback)(const void *transfer_info, void *ptr, int remains)
int(* curl_sockopt_callback)(void *clientp, curl_socket_t curlfd, curlsocktype purpose)
int(* curl_xferinfo_callback)(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow)
CURL_EXTERN CURLcode curl_easy_ssls_import(CURL *handle, const char *session_key, const unsigned char *shmac, size_t shmac_len, const unsigned char *sdata, size_t sdata_len)
CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part, curl_off_t datasize, curl_read_callback readfunc, curl_seek_callback seekfunc, curl_free_callback freefunc, void *arg)
#define CURLOPTTYPE_SLISTPOINT
CURL_EXTERN void curl_mime_free(curl_mime *mime)
CURL_EXTERN struct curl_slist * curl_slist_append(struct curl_slist *list, const char *data)
@ CURLKHSTAT_FINE_ADD_TO_FILE
@ CURLKHSTAT_FINE_REPLACE
size_t(* curl_read_callback)(char *buffer, size_t size, size_t nitems, void *instream)
int(* curl_trailer_callback)(struct curl_slist **list, void *userdata)
CURL_EXTERN int void * arg
@ CURL_TIMECOND_IFUNMODSINCE
@ CURL_TIMECOND_IFMODSINCE
#define CURLOPTTYPE_FUNCTIONPOINT
int(* curl_closesocket_callback)(void *clientp, curl_socket_t item)
CURL_EXTERN void curl_free(void *p)
#define CURLOPTTYPE_OBJECTPOINT
long(* curl_chunk_end_callback)(void *ptr)
CURL_EXTERN CURLcode curl_global_init_mem(long flags, curl_malloc_callback m, curl_free_callback f, curl_realloc_callback r, curl_strdup_callback s, curl_calloc_callback c)
CURLcode curl_ssls_export_cb(CURL *handle, void *userptr, const char *session_key, const unsigned char *shmac, size_t shmac_len, const unsigned char *sdata, size_t sdata_len, curl_off_t valid_until, int ietf_tls_id, const char *alpn, size_t earlydata_max)
int(* curl_sshkeycallback)(CURL *easy, const struct curl_khkey *knownkey, const struct curl_khkey *foundkey, enum curl_khmatch, void *clientp)
int(* curl_seek_callback)(void *instream, curl_off_t offset, int origin)
@ CURLPROXY_SOCKS5_HOSTNAME
@ CURLFTP_CREATE_DIR_LAST
@ CURLFTP_CREATE_DIR_RETRY
@ CURLFTP_CREATE_DIR_NONE
@ CURLSSLBACKEND_SECURETRANSPORT
@ CURLSSLBACKEND_OBSOLETE4
@ CURLSSLBACKEND_SCHANNEL
CURL_EXTERN CURLcode curl_global_init(long flags)
CURL_EXTERN CURLcode curl_easy_ssls_export(CURL *handle, curl_ssls_export_cb *export_fn, void *userptr)
@ CURLFILETYPE_DEVICE_CHAR
@ CURLFILETYPE_DEVICE_BLOCK
CURL_EXTERN int void curl_formget_callback append
CURL_EXTERN char * curl_escape(const char *string, int length)
int(* curl_resolver_start_callback)(void *resolver_state, void *reserved, void *userdata)
@ CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED
@ CURLPX_REPLY_GENERAL_SERVER_FAILURE
@ CURLPX_REPLY_TTL_EXPIRED
@ CURLPX_REPLY_UNASSIGNED
@ CURLPX_BAD_ADDRESS_TYPE
@ CURLPX_REPLY_NETWORK_UNREACHABLE
@ CURLPX_REPLY_COMMAND_NOT_SUPPORTED
@ CURLPX_GSSAPI_PROTECTION
@ CURLPX_REPLY_HOST_UNREACHABLE
@ CURLPX_REPLY_NOT_ALLOWED
@ CURLPX_REPLY_CONNECTION_REFUSED
#define CURLOPT(na, t, nu)
@ CURLINFO_APPCONNECT_TIME_T
@ CURLINFO_STARTTRANSFER_TIME_T
@ CURLINFO_PRETRANSFER_TIME_T
@ CURLINFO_SIZE_DOWNLOAD_T
@ CURLINFO_RTSP_CSEQ_RECV
@ CURLINFO_PROXY_SSL_VERIFYRESULT
@ CURLINFO_APPCONNECT_TIME
@ CURLINFO_RTSP_CLIENT_CSEQ
@ CURLINFO_RTSP_SESSION_ID
@ CURLINFO_HTTPAUTH_AVAIL
@ CURLINFO_EFFECTIVE_METHOD
@ CURLINFO_CONDITION_UNMET
@ CURLINFO_SSL_VERIFYRESULT
@ CURLINFO_PRETRANSFER_TIME
@ CURLINFO_CONNECT_TIME_T
@ CURLINFO_SPEED_DOWNLOAD_T
@ CURLINFO_CONTENT_LENGTH_UPLOAD_T
@ CURLINFO_PROXYAUTH_USED
@ CURLINFO_POSTTRANSFER_TIME_T
@ CURLINFO_PROXYAUTH_AVAIL
@ CURLINFO_FTP_ENTRY_PATH
@ CURLINFO_NAMELOOKUP_TIME
@ CURLINFO_NAMELOOKUP_TIME_T
@ CURLINFO_REDIRECT_COUNT
@ CURLINFO_REDIRECT_TIME_T
@ CURLINFO_HTTP_CONNECTCODE
@ CURLINFO_RTSP_SERVER_CSEQ
@ CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
@ CURLINFO_SPEED_UPLOAD_T
@ CURLINFO_EARLYDATA_SENT_T
@ CURLINFO_SPEED_DOWNLOAD
@ CURLINFO_STARTTRANSFER_TIME
void *(* curl_calloc_callback)(size_t nmemb, size_t size)
@ CURLCLOSEPOLICY_CALLBACK
@ CURLCLOSEPOLICY_SLOWEST
@ CURLCLOSEPOLICY_LEAST_TRAFFIC
@ CURLCLOSEPOLICY_LEAST_RECENTLY_USED
int(* curl_prereq_callback)(void *clientp, char *conn_primary_ip, char *conn_local_ip, int conn_primary_port, int conn_local_port)
#define CURLOPTDEPRECATED(na, t, nu, v, m)
CURL_EXTERN curl_mime * curl_mime_init(CURL *easy)
struct curl_mimepart curl_mimepart
@ CURL_HTTP_VERSION_3ONLY
@ CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
CURL_EXTERN char * curl_version(void)
CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype)
void(* curl_unlock_function)(CURL *handle, curl_lock_data data, void *userptr)
#define CURLOPTTYPE_OFF_T
CURLSTScode(* curl_hstswrite_callback)(CURL *easy, struct curl_hstsentry *e, struct curl_index *i, void *userp)
CURLcode(* curl_conv_callback)(char *buffer, size_t length)
CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part, curl_mime *subparts)
CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part, const char *filename)
CURL_EXTERN int curl_strequal(const char *s1, const char *s2)
CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part, const char *encoding)
CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused)
CURL_EXTERN char * curl_easy_unescape(CURL *handle, const char *string, int length, int *outlength)
size_t(* curl_write_callback)(char *buffer, size_t size, size_t nitems, void *outstream)
struct curl_mime curl_mime
void(* curl_free_callback)(void *ptr)
int(* curl_debug_callback)(CURL *handle, curl_infotype type, char *data, size_t size, void *userptr)
CURL_EXTERN CURLcode curl_global_trace(const char *config)
CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part, struct curl_slist *headers, int take_ownership)
curlioerr(* curl_ioctl_callback)(CURL *handle, int cmd, void *clientp)
#define CURLOPTTYPE_VALUES
@ CURLE_BAD_FUNCTION_ARGUMENT
@ CURLE_FTP_ACCEPT_FAILED
@ CURLE_BAD_CONTENT_ENCODING
@ CURLE_FTP_WEIRD_PASV_REPLY
@ CURLE_HTTP_RETURNED_ERROR
@ CURLE_ABORTED_BY_CALLBACK
@ CURLE_FTP_COULDNT_USE_REST
@ CURLE_FTP_ACCEPT_TIMEOUT
@ CURLE_REMOTE_FILE_NOT_FOUND
@ CURLE_SSL_ENGINE_NOTFOUND
@ CURLE_FILESIZE_EXCEEDED
@ CURLE_SSL_INVALIDCERTSTATUS
@ CURLE_QUIC_CONNECT_ERROR
@ CURLE_REMOTE_ACCESS_DENIED
@ CURLE_RECURSIVE_API_CALL
@ CURLE_FILE_COULDNT_READ_FILE
@ CURLE_PEER_FAILED_VERIFICATION
@ CURLE_SSL_PINNEDPUBKEYNOTMATCH
@ CURLE_TOO_MANY_REDIRECTS
@ CURLE_SSL_SHUTDOWN_FAILED
@ CURLE_SSL_CACERT_BADFILE
@ CURLE_SSL_ENGINE_SETFAILED
@ CURLE_COULDNT_RESOLVE_PROXY
@ CURLE_UNSUPPORTED_PROTOCOL
@ CURLE_FTP_BAD_FILE_LIST
@ CURLE_WEIRD_SERVER_REPLY
@ CURLE_FTP_WEIRD_PASS_REPLY
@ CURLE_SSL_ENGINE_INITFAILED
@ CURLE_FTP_COULDNT_SET_TYPE
@ CURLE_BAD_DOWNLOAD_RESUME
@ CURLE_LDAP_SEARCH_FAILED
@ CURLE_FTP_WEIRD_227_FORMAT
@ CURLE_OPERATION_TIMEDOUT
@ CURLE_RTSP_SESSION_ERROR
@ CURLE_FTP_COULDNT_RETR_FILE
@ CURLE_SETOPT_OPTION_SYNTAX
@ CURLE_REMOTE_FILE_EXISTS
@ CURLE_COULDNT_RESOLVE_HOST
@ CURLE_UNRECOVERABLE_POLL
@ CURLE_NO_CONNECTION_AVAILABLE
@ CURLE_SSL_CONNECT_ERROR
@ CURLE_FTP_CANT_GET_HOST
int(* curl_progress_callback)(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
CURLcode(* curl_ssl_ctx_callback)(CURL *curl, void *ssl_ctx, void *userptr)
CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name, const curl_ssl_backend ***avail)
CURL_EXTERN const char * curl_easy_strerror(CURLcode)
@ CURL_LOCK_DATA_SSL_SESSION
CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part, const char *data, size_t datasize)
CURL_EXTERN CURLFORMcode struct curl_httppost ** last_post
void *(* curl_malloc_callback)(size_t size)
CURL_EXTERN CURLFORMcode struct curl_httppost typedef size_t(* curl_formget_callback)(void *arg, const char *buf, size_t len)
CURL_EXTERN CURLMcode curl_socket_t s
struct curl_slist ** certinfo
struct curl_fileinfo::@153 strings
unsigned int includeSubDomains
struct curl_httppost * next
struct curl_slist * contentheader
struct curl_httppost * more
const char *const * protocols
const char * zstd_version
const char * libssh_version
const char * nghttp2_version
unsigned int zstd_ver_num
const char * gsasl_version
const char *const * feature_names
const char * rtmp_version
unsigned int nghttp2_ver_num
unsigned int brotli_ver_num
const char * hyper_version
const char * brotli_version
const char * quic_version
const char * libz_version
CURL_TYPEOF_CURL_OFF_T curl_off_t
#define curl_share_setopt(share, opt, param)