File indexing completed on 2026-08-05 09:09:22
0001 #ifndef CURLINC_CURL_H
0002 #define CURLINC_CURL_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #ifdef CURL_NO_OLDIES
0033 #define CURL_STRICTER
0034 #endif
0035
0036
0037 #if (defined(__GNUC__) && \
0038 ((__GNUC__ > 12) || ((__GNUC__ == 12) && (__GNUC_MINOR__ >= 1))) || \
0039 (defined(__clang__) && __clang_major__ >= 3) || \
0040 defined(__IAR_SYSTEMS_ICC__)) && \
0041 !defined(__INTEL_COMPILER) && \
0042 !defined(CURL_DISABLE_DEPRECATION) && !defined(BUILDING_LIBCURL)
0043 #define CURL_DEPRECATED(version, message) \
0044 __attribute__((deprecated("since " # version ". " message)))
0045 #ifdef __IAR_SYSTEMS_ICC__
0046 #define CURL_IGNORE_DEPRECATION(statements) \
0047 _Pragma("diag_suppress=Pe1444") \
0048 statements \
0049 _Pragma("diag_default=Pe1444")
0050 #else
0051 #define CURL_IGNORE_DEPRECATION(statements) \
0052 _Pragma("GCC diagnostic push") \
0053 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
0054 statements \
0055 _Pragma("GCC diagnostic pop")
0056 #endif
0057 #else
0058 #define CURL_DEPRECATED(version, message)
0059 #define CURL_IGNORE_DEPRECATION(statements) statements
0060 #endif
0061
0062 #include "curlver.h" /* libcurl version defines */
0063 #include "system.h" /* determine things runtime */
0064
0065 #include <stdio.h>
0066 #include <limits.h>
0067
0068 #if defined(__FreeBSD__) || defined(__MidnightBSD__)
0069
0070 #include <sys/param.h>
0071 #endif
0072
0073
0074 #include <sys/types.h>
0075 #include <time.h>
0076
0077 #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
0078 #if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
0079 defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
0080
0081
0082 #include <winsock2.h>
0083 #include <ws2tcpip.h>
0084 #endif
0085 #endif
0086
0087
0088
0089
0090 #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
0091 defined(__minix) || defined(__INTEGRITY) || \
0092 defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
0093 defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
0094 (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
0095 (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
0096 defined(__sun__) || defined(__serenity__) || defined(__vxworks__)
0097 #include <sys/select.h>
0098 #endif
0099
0100 #ifndef _WIN32
0101 #include <sys/socket.h>
0102 #include <sys/time.h>
0103 #endif
0104
0105 #ifdef __cplusplus
0106 extern "C" {
0107 #endif
0108
0109 typedef void CURL;
0110 typedef void CURLSH;
0111
0112
0113
0114
0115
0116 #ifdef __has_declspec_attribute
0117 #define CURL_HAS_DECLSPEC_ATTRIBUTE(x) __has_declspec_attribute(x)
0118 #else
0119 #define CURL_HAS_DECLSPEC_ATTRIBUTE(x) 0
0120 #endif
0121
0122 #ifdef CURL_STATICLIB
0123 # define CURL_EXTERN
0124 #elif defined(_WIN32) || \
0125 (CURL_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \
0126 CURL_HAS_DECLSPEC_ATTRIBUTE(dllimport))
0127 # ifdef BUILDING_LIBCURL
0128 # define CURL_EXTERN __declspec(dllexport)
0129 # else
0130 # define CURL_EXTERN __declspec(dllimport)
0131 # endif
0132 #elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)
0133 # define CURL_EXTERN CURL_EXTERN_SYMBOL
0134 #else
0135 # define CURL_EXTERN
0136 #endif
0137
0138 #ifndef curl_socket_typedef
0139
0140 #if defined(_WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H)
0141 typedef SOCKET curl_socket_t;
0142 #define CURL_SOCKET_BAD INVALID_SOCKET
0143 #else
0144 typedef int curl_socket_t;
0145 #define CURL_SOCKET_BAD (-1)
0146 #endif
0147 #define curl_socket_typedef
0148 #endif
0149
0150
0151 typedef enum {
0152 CURLSSLBACKEND_NONE = 0,
0153 CURLSSLBACKEND_OPENSSL = 1,
0154 CURLSSLBACKEND_GNUTLS = 2,
0155 CURLSSLBACKEND_NSS CURL_DEPRECATED(8.3.0, "") = 3,
0156 CURLSSLBACKEND_OBSOLETE4 = 4,
0157 CURLSSLBACKEND_GSKIT CURL_DEPRECATED(8.3.0, "") = 5,
0158 CURLSSLBACKEND_POLARSSL CURL_DEPRECATED(7.69.0, "") = 6,
0159 CURLSSLBACKEND_WOLFSSL = 7,
0160 CURLSSLBACKEND_SCHANNEL = 8,
0161 CURLSSLBACKEND_SECURETRANSPORT CURL_DEPRECATED(8.15.0, "") = 9,
0162 CURLSSLBACKEND_AXTLS CURL_DEPRECATED(7.61.0, "") = 10,
0163 CURLSSLBACKEND_MBEDTLS = 11,
0164 CURLSSLBACKEND_MESALINK CURL_DEPRECATED(7.82.0, "") = 12,
0165 CURLSSLBACKEND_BEARSSL CURL_DEPRECATED(8.15.0, "") = 13,
0166 CURLSSLBACKEND_RUSTLS = 14
0167 } curl_sslbackend;
0168
0169
0170 #define CURLSSLBACKEND_AWSLC CURLSSLBACKEND_OPENSSL
0171 #define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL
0172 #define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
0173
0174
0175 #define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL
0176 #define CURLSSLBACKEND_DARWINSSL CURLSSLBACKEND_SECURETRANSPORT
0177
0178
0179 #define CURLFOLLOW_ALL 1L
0180
0181
0182
0183 #define CURLFOLLOW_OBEYCODE 2L
0184
0185
0186 #define CURLFOLLOW_FIRSTONLY 3L
0187
0188 struct curl_httppost {
0189 struct curl_httppost *next;
0190 char *name;
0191 long namelength;
0192 char *contents;
0193 long contentslength;
0194
0195 char *buffer;
0196 long bufferlength;
0197 char *contenttype;
0198 struct curl_slist *contentheader;
0199 struct curl_httppost *more;
0200
0201
0202 long flags;
0203
0204
0205 #define CURL_HTTPPOST_FILENAME (1 << 0)
0206
0207 #define CURL_HTTPPOST_READFILE (1 << 1)
0208
0209 #define CURL_HTTPPOST_PTRNAME (1 << 2)
0210
0211 #define CURL_HTTPPOST_PTRCONTENTS (1 << 3)
0212
0213 #define CURL_HTTPPOST_BUFFER (1 << 4)
0214
0215 #define CURL_HTTPPOST_PTRBUFFER (1 << 5)
0216
0217
0218 #define CURL_HTTPPOST_CALLBACK (1 << 6)
0219
0220 #define CURL_HTTPPOST_LARGE (1 << 7)
0221
0222 char *showfilename;
0223
0224
0225 void *userp;
0226
0227 curl_off_t contentlen;
0228
0229
0230 };
0231
0232
0233
0234 #define CURL_PROGRESSFUNC_CONTINUE 0x10000001
0235
0236
0237
0238 typedef int (*curl_progress_callback)(void *clientp,
0239 double dltotal,
0240 double dlnow,
0241 double ultotal,
0242 double ulnow);
0243
0244
0245
0246
0247 typedef int (*curl_xferinfo_callback)(void *clientp,
0248 curl_off_t dltotal,
0249 curl_off_t dlnow,
0250 curl_off_t ultotal,
0251 curl_off_t ulnow);
0252
0253 #ifndef CURL_MAX_READ_SIZE
0254
0255 #define CURL_MAX_READ_SIZE (10*1024*1024)
0256 #endif
0257
0258 #ifndef CURL_MAX_WRITE_SIZE
0259
0260
0261
0262
0263
0264
0265 #define CURL_MAX_WRITE_SIZE 16384
0266 #endif
0267
0268 #ifndef CURL_MAX_HTTP_HEADER
0269
0270
0271
0272 #define CURL_MAX_HTTP_HEADER (100*1024)
0273 #endif
0274
0275
0276
0277 #define CURL_WRITEFUNC_PAUSE 0x10000001
0278
0279
0280
0281 #define CURL_WRITEFUNC_ERROR 0xFFFFFFFF
0282
0283 typedef size_t (*curl_write_callback)(char *buffer,
0284 size_t size,
0285 size_t nitems,
0286 void *outstream);
0287
0288
0289 typedef int (*curl_resolver_start_callback)(void *resolver_state,
0290 void *reserved, void *userdata);
0291
0292
0293 typedef enum {
0294 CURLFILETYPE_FILE = 0,
0295 CURLFILETYPE_DIRECTORY,
0296 CURLFILETYPE_SYMLINK,
0297 CURLFILETYPE_DEVICE_BLOCK,
0298 CURLFILETYPE_DEVICE_CHAR,
0299 CURLFILETYPE_NAMEDPIPE,
0300 CURLFILETYPE_SOCKET,
0301 CURLFILETYPE_DOOR,
0302
0303 CURLFILETYPE_UNKNOWN
0304 } curlfiletype;
0305
0306 #define CURLFINFOFLAG_KNOWN_FILENAME (1 << 0)
0307 #define CURLFINFOFLAG_KNOWN_FILETYPE (1 << 1)
0308 #define CURLFINFOFLAG_KNOWN_TIME (1 << 2)
0309 #define CURLFINFOFLAG_KNOWN_PERM (1 << 3)
0310 #define CURLFINFOFLAG_KNOWN_UID (1 << 4)
0311 #define CURLFINFOFLAG_KNOWN_GID (1 << 5)
0312 #define CURLFINFOFLAG_KNOWN_SIZE (1 << 6)
0313 #define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1 << 7)
0314
0315
0316 struct curl_fileinfo {
0317 char *filename;
0318 curlfiletype filetype;
0319 time_t time;
0320 unsigned int perm;
0321 int uid;
0322 int gid;
0323 curl_off_t size;
0324 long int hardlinks;
0325
0326 struct {
0327
0328 char *time;
0329 char *perm;
0330 char *user;
0331 char *group;
0332 char *target;
0333 } strings;
0334
0335 unsigned int flags;
0336
0337
0338
0339 char *b_data;
0340 size_t b_size;
0341 size_t b_used;
0342 };
0343
0344
0345 #define CURL_CHUNK_BGN_FUNC_OK 0
0346 #define CURL_CHUNK_BGN_FUNC_FAIL 1
0347 #define CURL_CHUNK_BGN_FUNC_SKIP 2
0348
0349
0350
0351
0352 typedef long (*curl_chunk_bgn_callback)(const void *transfer_info,
0353 void *ptr,
0354 int remains);
0355
0356
0357 #define CURL_CHUNK_END_FUNC_OK 0
0358 #define CURL_CHUNK_END_FUNC_FAIL 1
0359
0360
0361
0362
0363
0364
0365
0366 typedef long (*curl_chunk_end_callback)(void *ptr);
0367
0368
0369 #define CURL_FNMATCHFUNC_MATCH 0
0370 #define CURL_FNMATCHFUNC_NOMATCH 1
0371 #define CURL_FNMATCHFUNC_FAIL 2
0372
0373
0374
0375 typedef int (*curl_fnmatch_callback)(void *ptr,
0376 const char *pattern,
0377 const char *string);
0378
0379
0380 #define CURL_SEEKFUNC_OK 0
0381 #define CURL_SEEKFUNC_FAIL 1
0382 #define CURL_SEEKFUNC_CANTSEEK 2
0383
0384 typedef int (*curl_seek_callback)(void *instream,
0385 curl_off_t offset,
0386 int origin);
0387
0388
0389
0390 #define CURL_READFUNC_ABORT 0x10000000
0391
0392
0393 #define CURL_READFUNC_PAUSE 0x10000001
0394
0395
0396
0397 #define CURL_TRAILERFUNC_OK 0
0398
0399
0400 #define CURL_TRAILERFUNC_ABORT 1
0401
0402 typedef size_t (*curl_read_callback)(char *buffer,
0403 size_t size,
0404 size_t nitems,
0405 void *instream);
0406
0407 typedef int (*curl_trailer_callback)(struct curl_slist **list,
0408 void *userdata);
0409
0410 typedef enum {
0411 CURLSOCKTYPE_IPCXN,
0412 CURLSOCKTYPE_ACCEPT,
0413 CURLSOCKTYPE_LAST
0414 } curlsocktype;
0415
0416
0417
0418 #define CURL_SOCKOPT_OK 0
0419 #define CURL_SOCKOPT_ERROR 1
0420
0421 #define CURL_SOCKOPT_ALREADY_CONNECTED 2
0422
0423 typedef int (*curl_sockopt_callback)(void *clientp,
0424 curl_socket_t curlfd,
0425 curlsocktype purpose);
0426
0427 struct curl_sockaddr {
0428 int family;
0429 int socktype;
0430 int protocol;
0431 unsigned int addrlen;
0432
0433
0434 struct sockaddr addr;
0435 };
0436
0437 typedef curl_socket_t
0438 (*curl_opensocket_callback)(void *clientp,
0439 curlsocktype purpose,
0440 struct curl_sockaddr *address);
0441
0442 typedef int
0443 (*curl_closesocket_callback)(void *clientp, curl_socket_t item);
0444
0445 typedef enum {
0446 CURLIOE_OK,
0447 CURLIOE_UNKNOWNCMD,
0448 CURLIOE_FAILRESTART,
0449 CURLIOE_LAST
0450 } curlioerr;
0451
0452 typedef enum {
0453 CURLIOCMD_NOP,
0454 CURLIOCMD_RESTARTREAD,
0455 CURLIOCMD_LAST
0456 } curliocmd;
0457
0458 typedef curlioerr (*curl_ioctl_callback)(CURL *handle,
0459 int cmd,
0460 void *clientp);
0461
0462 #ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS
0463
0464
0465
0466
0467
0468
0469 typedef void *(*curl_malloc_callback)(size_t size);
0470 typedef void (*curl_free_callback)(void *ptr);
0471 typedef void *(*curl_realloc_callback)(void *ptr, size_t size);
0472 typedef char *(*curl_strdup_callback)(const char *str);
0473 typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);
0474
0475 #define CURL_DID_MEMORY_FUNC_TYPEDEFS
0476 #endif
0477
0478
0479 typedef enum {
0480 CURLINFO_TEXT = 0,
0481 CURLINFO_HEADER_IN,
0482 CURLINFO_HEADER_OUT,
0483 CURLINFO_DATA_IN,
0484 CURLINFO_DATA_OUT,
0485 CURLINFO_SSL_DATA_IN,
0486 CURLINFO_SSL_DATA_OUT,
0487 CURLINFO_END
0488 } curl_infotype;
0489
0490 typedef int (*curl_debug_callback)
0491 (CURL *handle,
0492 curl_infotype type,
0493 char *data,
0494 size_t size,
0495 void *userptr);
0496
0497
0498 typedef int (*curl_prereq_callback)(void *clientp,
0499 char *conn_primary_ip,
0500 char *conn_local_ip,
0501 int conn_primary_port,
0502 int conn_local_port);
0503
0504
0505
0506 #define CURL_PREREQFUNC_OK 0
0507
0508
0509 #define CURL_PREREQFUNC_ABORT 1
0510
0511
0512
0513
0514
0515
0516
0517
0518 typedef enum {
0519 CURLE_OK = 0,
0520 CURLE_UNSUPPORTED_PROTOCOL,
0521 CURLE_FAILED_INIT,
0522 CURLE_URL_MALFORMAT,
0523 CURLE_NOT_BUILT_IN,
0524
0525 CURLE_COULDNT_RESOLVE_PROXY,
0526 CURLE_COULDNT_RESOLVE_HOST,
0527 CURLE_COULDNT_CONNECT,
0528 CURLE_WEIRD_SERVER_REPLY,
0529 CURLE_REMOTE_ACCESS_DENIED,
0530
0531
0532 CURLE_FTP_ACCEPT_FAILED,
0533
0534 CURLE_FTP_WEIRD_PASS_REPLY,
0535 CURLE_FTP_ACCEPT_TIMEOUT,
0536
0537
0538 CURLE_FTP_WEIRD_PASV_REPLY,
0539 CURLE_FTP_WEIRD_227_FORMAT,
0540 CURLE_FTP_CANT_GET_HOST,
0541 CURLE_HTTP2,
0542
0543
0544 CURLE_FTP_COULDNT_SET_TYPE,
0545 CURLE_PARTIAL_FILE,
0546 CURLE_FTP_COULDNT_RETR_FILE,
0547 CURLE_OBSOLETE20,
0548 CURLE_QUOTE_ERROR,
0549 CURLE_HTTP_RETURNED_ERROR,
0550 CURLE_WRITE_ERROR,
0551 CURLE_OBSOLETE24,
0552 CURLE_UPLOAD_FAILED,
0553 CURLE_READ_ERROR,
0554 CURLE_OUT_OF_MEMORY,
0555 CURLE_OPERATION_TIMEDOUT,
0556 CURLE_OBSOLETE29,
0557 CURLE_FTP_PORT_FAILED,
0558 CURLE_FTP_COULDNT_USE_REST,
0559 CURLE_OBSOLETE32,
0560 CURLE_RANGE_ERROR,
0561 CURLE_OBSOLETE34,
0562 CURLE_SSL_CONNECT_ERROR,
0563 CURLE_BAD_DOWNLOAD_RESUME,
0564 CURLE_FILE_COULDNT_READ_FILE,
0565 CURLE_LDAP_CANNOT_BIND,
0566 CURLE_LDAP_SEARCH_FAILED,
0567 CURLE_OBSOLETE40,
0568 CURLE_OBSOLETE41,
0569 CURLE_ABORTED_BY_CALLBACK,
0570 CURLE_BAD_FUNCTION_ARGUMENT,
0571 CURLE_OBSOLETE44,
0572 CURLE_INTERFACE_FAILED,
0573 CURLE_OBSOLETE46,
0574 CURLE_TOO_MANY_REDIRECTS,
0575 CURLE_UNKNOWN_OPTION,
0576 CURLE_SETOPT_OPTION_SYNTAX,
0577 CURLE_OBSOLETE50,
0578 CURLE_OBSOLETE51,
0579 CURLE_GOT_NOTHING,
0580 CURLE_SSL_ENGINE_NOTFOUND,
0581 CURLE_SSL_ENGINE_SETFAILED,
0582
0583 CURLE_SEND_ERROR,
0584 CURLE_RECV_ERROR,
0585 CURLE_OBSOLETE57,
0586 CURLE_SSL_CERTPROBLEM,
0587 CURLE_SSL_CIPHER,
0588 CURLE_PEER_FAILED_VERIFICATION,
0589
0590 CURLE_BAD_CONTENT_ENCODING,
0591 CURLE_OBSOLETE62,
0592 CURLE_FILESIZE_EXCEEDED,
0593 CURLE_USE_SSL_FAILED,
0594 CURLE_SEND_FAIL_REWIND,
0595
0596 CURLE_SSL_ENGINE_INITFAILED,
0597 CURLE_LOGIN_DENIED,
0598
0599 CURLE_TFTP_NOTFOUND,
0600 CURLE_TFTP_PERM,
0601 CURLE_REMOTE_DISK_FULL,
0602 CURLE_TFTP_ILLEGAL,
0603 CURLE_TFTP_UNKNOWNID,
0604 CURLE_REMOTE_FILE_EXISTS,
0605 CURLE_TFTP_NOSUCHUSER,
0606 CURLE_OBSOLETE75,
0607 CURLE_OBSOLETE76,
0608 CURLE_SSL_CACERT_BADFILE,
0609
0610 CURLE_REMOTE_FILE_NOT_FOUND,
0611 CURLE_SSH,
0612
0613
0614
0615 CURLE_SSL_SHUTDOWN_FAILED,
0616
0617 CURLE_AGAIN,
0618
0619
0620 CURLE_SSL_CRL_BADFILE,
0621
0622 CURLE_SSL_ISSUER_ERROR,
0623
0624 CURLE_FTP_PRET_FAILED,
0625 CURLE_RTSP_CSEQ_ERROR,
0626 CURLE_RTSP_SESSION_ERROR,
0627 CURLE_FTP_BAD_FILE_LIST,
0628 CURLE_CHUNK_FAILED,
0629 CURLE_NO_CONNECTION_AVAILABLE,
0630
0631 CURLE_SSL_PINNEDPUBKEYNOTMATCH,
0632
0633 CURLE_SSL_INVALIDCERTSTATUS,
0634 CURLE_HTTP2_STREAM,
0635
0636 CURLE_RECURSIVE_API_CALL,
0637
0638 CURLE_AUTH_ERROR,
0639
0640 CURLE_HTTP3,
0641 CURLE_QUIC_CONNECT_ERROR,
0642 CURLE_PROXY,
0643 CURLE_SSL_CLIENTCERT,
0644 CURLE_UNRECOVERABLE_POLL,
0645 CURLE_TOO_LARGE,
0646 CURLE_ECH_REQUIRED,
0647 CURL_LAST
0648 } CURLcode;
0649
0650 #ifndef CURL_NO_OLDIES
0651
0652
0653
0654 #define CURLE_FUNCTION_NOT_FOUND CURLE_OBSOLETE41
0655
0656
0657 #define CURLE_HTTP_POST_ERROR CURLE_OBSOLETE34
0658
0659
0660 #define CURLE_OBSOLETE16 CURLE_HTTP2
0661
0662
0663 #define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
0664 #define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
0665
0666
0667 #define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING
0668 #define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY
0669
0670
0671 #define CURLE_SSL_CACERT CURLE_PEER_FAILED_VERIFICATION
0672
0673
0674 #define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION
0675
0676
0677 #define CURLE_TELNET_OPTION_SYNTAX CURLE_SETOPT_OPTION_SYNTAX
0678
0679
0680
0681 #define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION
0682
0683
0684
0685 #define CURLE_OBSOLETE CURLE_OBSOLETE50
0686 #define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46
0687 #define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44
0688 #define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10
0689 #define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16
0690 #define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32
0691 #define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29
0692 #define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12
0693 #define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20
0694 #define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40
0695 #define CURLE_MALFORMAT_USER CURLE_OBSOLETE24
0696 #define CURLE_SHARE_IN_USE CURLE_OBSOLETE57
0697 #define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN
0698
0699 #define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED
0700 #define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE
0701 #define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR
0702 #define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL
0703 #define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS
0704 #define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR
0705 #define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED
0706
0707
0708
0709 #define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT
0710 #define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
0711 #define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
0712 #define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
0713 #define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
0714 #define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
0715 #define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62
0716 #define CURLE_CONV_REQD CURLE_OBSOLETE76
0717 #define CURLE_CONV_FAILED CURLE_OBSOLETE75
0718
0719
0720
0721
0722 #define CURLE_ALREADY_COMPLETE 99999
0723
0724
0725 #define CURLOPT_FILE CURLOPT_WRITEDATA
0726 #define CURLOPT_INFILE CURLOPT_READDATA
0727 #define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA
0728
0729
0730
0731 #define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40
0732 #define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72
0733 #define CURLOPT_OBSOLETE72 9999
0734 #define CURLOPT_OBSOLETE40 9999
0735
0736 #endif
0737
0738
0739
0740
0741
0742 typedef enum {
0743 CURLPX_OK,
0744 CURLPX_BAD_ADDRESS_TYPE,
0745 CURLPX_BAD_VERSION,
0746 CURLPX_CLOSED,
0747 CURLPX_GSSAPI,
0748 CURLPX_GSSAPI_PERMSG,
0749 CURLPX_GSSAPI_PROTECTION,
0750 CURLPX_IDENTD,
0751 CURLPX_IDENTD_DIFFER,
0752 CURLPX_LONG_HOSTNAME,
0753 CURLPX_LONG_PASSWD,
0754 CURLPX_LONG_USER,
0755 CURLPX_NO_AUTH,
0756 CURLPX_RECV_ADDRESS,
0757 CURLPX_RECV_AUTH,
0758 CURLPX_RECV_CONNECT,
0759 CURLPX_RECV_REQACK,
0760 CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED,
0761 CURLPX_REPLY_COMMAND_NOT_SUPPORTED,
0762 CURLPX_REPLY_CONNECTION_REFUSED,
0763 CURLPX_REPLY_GENERAL_SERVER_FAILURE,
0764 CURLPX_REPLY_HOST_UNREACHABLE,
0765 CURLPX_REPLY_NETWORK_UNREACHABLE,
0766 CURLPX_REPLY_NOT_ALLOWED,
0767 CURLPX_REPLY_TTL_EXPIRED,
0768 CURLPX_REPLY_UNASSIGNED,
0769 CURLPX_REQUEST_FAILED,
0770 CURLPX_RESOLVE_HOST,
0771 CURLPX_SEND_AUTH,
0772 CURLPX_SEND_CONNECT,
0773 CURLPX_SEND_REQUEST,
0774 CURLPX_UNKNOWN_FAIL,
0775 CURLPX_UNKNOWN_MODE,
0776 CURLPX_USER_REJECTED,
0777 CURLPX_LAST
0778 } CURLproxycode;
0779
0780
0781 typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);
0782
0783 typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl,
0784 void *ssl_ctx,
0785
0786
0787
0788 void *userptr);
0789
0790 #define CURLPROXY_HTTP 0L
0791
0792 #define CURLPROXY_HTTP_1_0 1L
0793
0794 #define CURLPROXY_HTTPS 2L
0795
0796 #define CURLPROXY_HTTPS2 3L
0797
0798 #define CURLPROXY_SOCKS4 4L
0799
0800 #define CURLPROXY_SOCKS5 5L
0801 #define CURLPROXY_SOCKS4A 6L
0802 #define CURLPROXY_SOCKS5_HOSTNAME 7L
0803
0804
0805
0806 typedef enum {
0807 CURLPROXY_LAST = 8
0808 } curl_proxytype;
0809
0810
0811
0812
0813
0814
0815
0816
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826
0827
0828 #define CURLAUTH_NONE ((unsigned long)0)
0829 #define CURLAUTH_BASIC (((unsigned long)1) << 0)
0830 #define CURLAUTH_DIGEST (((unsigned long)1) << 1)
0831 #define CURLAUTH_NEGOTIATE (((unsigned long)1) << 2)
0832
0833 #define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE
0834
0835 #define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE
0836 #define CURLAUTH_NTLM (((unsigned long)1) << 3)
0837 #define CURLAUTH_DIGEST_IE (((unsigned long)1) << 4)
0838 #ifndef CURL_NO_OLDIES
0839
0840 #define CURLAUTH_NTLM_WB (((unsigned long)1) << 5)
0841 #endif
0842 #define CURLAUTH_BEARER (((unsigned long)1) << 6)
0843 #define CURLAUTH_AWS_SIGV4 (((unsigned long)1) << 7)
0844 #define CURLAUTH_ONLY (((unsigned long)1) << 31)
0845 #define CURLAUTH_ANY ((~CURLAUTH_DIGEST_IE) & \
0846 ((unsigned long)0xffffffff))
0847 #define CURLAUTH_ANYSAFE ((~(CURLAUTH_BASIC | CURLAUTH_DIGEST_IE)) & \
0848 ((unsigned long)0xffffffff))
0849
0850
0851 #define CURLSSH_AUTH_ANY ((unsigned long)0xffffffff)
0852 #define CURLSSH_AUTH_NONE 0L
0853 #define CURLSSH_AUTH_PUBLICKEY (1L << 0)
0854 #define CURLSSH_AUTH_PASSWORD (1L << 1)
0855 #define CURLSSH_AUTH_HOST (1L << 2)
0856 #define CURLSSH_AUTH_KEYBOARD (1L << 3)
0857 #define CURLSSH_AUTH_AGENT (1L << 4)
0858 #define CURLSSH_AUTH_GSSAPI (1L << 5)
0859 #define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY
0860
0861 #define CURLGSSAPI_DELEGATION_NONE 0L
0862 #define CURLGSSAPI_DELEGATION_POLICY_FLAG (1L<<0)
0863 #define CURLGSSAPI_DELEGATION_FLAG (1L<<1)
0864
0865 #define CURL_ERROR_SIZE 256
0866
0867 enum curl_khtype {
0868 CURLKHTYPE_UNKNOWN,
0869 CURLKHTYPE_RSA1,
0870 CURLKHTYPE_RSA,
0871 CURLKHTYPE_DSS,
0872 CURLKHTYPE_ECDSA,
0873 CURLKHTYPE_ED25519
0874 };
0875
0876 struct curl_khkey {
0877 const char *key;
0878
0879 size_t len;
0880 enum curl_khtype keytype;
0881 };
0882
0883
0884
0885 enum curl_khstat {
0886 CURLKHSTAT_FINE_ADD_TO_FILE,
0887 CURLKHSTAT_FINE,
0888 CURLKHSTAT_REJECT,
0889 CURLKHSTAT_DEFER,
0890
0891
0892 CURLKHSTAT_FINE_REPLACE,
0893 CURLKHSTAT_LAST
0894 };
0895
0896
0897 enum curl_khmatch {
0898 CURLKHMATCH_OK,
0899 CURLKHMATCH_MISMATCH,
0900 CURLKHMATCH_MISSING,
0901 CURLKHMATCH_LAST
0902 };
0903
0904 typedef int
0905 (*curl_sshkeycallback) (CURL *easy,
0906 const struct curl_khkey *knownkey,
0907 const struct curl_khkey *foundkey,
0908 enum curl_khmatch,
0909 void *clientp);
0910
0911
0912 typedef int
0913 (*curl_sshhostkeycallback) (void *clientp,
0914
0915 int keytype,
0916 const char *key,
0917 size_t keylen);
0918
0919
0920
0921
0922 #define CURLUSESSL_NONE 0L
0923 #define CURLUSESSL_TRY 1L
0924 #define CURLUSESSL_CONTROL 2L
0925 #define CURLUSESSL_ALL 3L
0926
0927 typedef enum {
0928 CURLUSESSL_LAST = 4
0929 } curl_usessl;
0930
0931
0932
0933
0934
0935
0936
0937
0938 #define CURLSSLOPT_ALLOW_BEAST (1L << 0)
0939
0940
0941
0942 #define CURLSSLOPT_NO_REVOKE (1L << 1)
0943
0944
0945
0946 #define CURLSSLOPT_NO_PARTIALCHAIN (1L << 2)
0947
0948
0949
0950
0951 #define CURLSSLOPT_REVOKE_BEST_EFFORT (1L << 3)
0952
0953
0954
0955 #define CURLSSLOPT_NATIVE_CA (1L << 4)
0956
0957
0958
0959 #define CURLSSLOPT_AUTO_CLIENT_CERT (1L << 5)
0960
0961
0962 #define CURLSSLOPT_EARLYDATA (1L << 6)
0963
0964
0965
0966
0967 #define CURL_HET_DEFAULT 200L
0968
0969
0970 #define CURL_UPKEEP_INTERVAL_DEFAULT 60000L
0971
0972 #ifndef CURL_NO_OLDIES
0973
0974
0975
0976
0977
0978 #define CURLFTPSSL_NONE CURLUSESSL_NONE
0979 #define CURLFTPSSL_TRY CURLUSESSL_TRY
0980 #define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL
0981 #define CURLFTPSSL_ALL CURLUSESSL_ALL
0982 #define CURLFTPSSL_LAST CURLUSESSL_LAST
0983 #define curl_ftpssl curl_usessl
0984 #endif
0985
0986
0987 #define CURLFTPSSL_CCC_NONE 0L
0988 #define CURLFTPSSL_CCC_PASSIVE 1L
0989 #define CURLFTPSSL_CCC_ACTIVE 2L
0990
0991 typedef enum {
0992 CURLFTPSSL_CCC_LAST = 3
0993 } curl_ftpccc;
0994
0995
0996 #define CURLFTPAUTH_DEFAULT 0L
0997 #define CURLFTPAUTH_SSL 1L
0998 #define CURLFTPAUTH_TLS 2L
0999
1000 typedef enum {
1001 CURLFTPAUTH_LAST = 3
1002 } curl_ftpauth;
1003
1004
1005 #define CURLFTP_CREATE_DIR_NONE 0L
1006 #define CURLFTP_CREATE_DIR 1L
1007
1008
1009 #define CURLFTP_CREATE_DIR_RETRY 2L
1010
1011
1012 typedef enum {
1013 CURLFTP_CREATE_DIR_LAST = 3
1014 } curl_ftpcreatedir;
1015
1016
1017 #define CURLFTPMETHOD_DEFAULT 0L
1018 #define CURLFTPMETHOD_MULTICWD 1L
1019
1020 #define CURLFTPMETHOD_NOCWD 2L
1021 #define CURLFTPMETHOD_SINGLECWD 3L
1022
1023 typedef enum {
1024 CURLFTPMETHOD_LAST = 4
1025 } curl_ftpmethod;
1026
1027
1028 #define CURLHEADER_UNIFIED 0L
1029 #define CURLHEADER_SEPARATE (1L << 0)
1030
1031
1032 #define CURLALTSVC_READONLYFILE (1L << 2)
1033 #define CURLALTSVC_H1 (1L << 3)
1034 #define CURLALTSVC_H2 (1L << 4)
1035 #define CURLALTSVC_H3 (1L << 5)
1036
1037
1038 #define CURLULFLAG_ANSWERED (1L << 0)
1039 #define CURLULFLAG_DELETED (1L << 1)
1040 #define CURLULFLAG_DRAFT (1L << 2)
1041 #define CURLULFLAG_FLAGGED (1L << 3)
1042 #define CURLULFLAG_SEEN (1L << 4)
1043
1044 struct curl_hstsentry {
1045 char *name;
1046 size_t namelen;
1047 unsigned int includeSubDomains:1;
1048 char expire[18];
1049 };
1050
1051 struct curl_index {
1052 size_t index;
1053 size_t total;
1054 };
1055
1056 typedef enum {
1057 CURLSTS_OK,
1058 CURLSTS_DONE,
1059 CURLSTS_FAIL
1060 } CURLSTScode;
1061
1062 typedef CURLSTScode (*curl_hstsread_callback)(CURL *easy,
1063 struct curl_hstsentry *e,
1064 void *userp);
1065 typedef CURLSTScode (*curl_hstswrite_callback)(CURL *easy,
1066 struct curl_hstsentry *e,
1067 struct curl_index *i,
1068 void *userp);
1069
1070
1071 #define CURLHSTS_ENABLE (1L << 0)
1072 #define CURLHSTS_READONLYFILE (1L << 1)
1073
1074
1075
1076 #define CURLPROTO_HTTP (1L << 0)
1077 #define CURLPROTO_HTTPS (1L << 1)
1078 #define CURLPROTO_FTP (1L << 2)
1079 #define CURLPROTO_FTPS (1L << 3)
1080 #define CURLPROTO_SCP (1L << 4)
1081 #define CURLPROTO_SFTP (1L << 5)
1082 #define CURLPROTO_TELNET (1L << 6)
1083 #define CURLPROTO_LDAP (1L << 7)
1084 #define CURLPROTO_LDAPS (1L << 8)
1085 #define CURLPROTO_DICT (1L << 9)
1086 #define CURLPROTO_FILE (1L << 10)
1087 #define CURLPROTO_TFTP (1L << 11)
1088 #define CURLPROTO_IMAP (1L << 12)
1089 #define CURLPROTO_IMAPS (1L << 13)
1090 #define CURLPROTO_POP3 (1L << 14)
1091 #define CURLPROTO_POP3S (1L << 15)
1092 #define CURLPROTO_SMTP (1L << 16)
1093 #define CURLPROTO_SMTPS (1L << 17)
1094 #define CURLPROTO_RTSP (1L << 18)
1095 #define CURLPROTO_RTMP (1L << 19)
1096 #define CURLPROTO_RTMPT (1L << 20)
1097 #define CURLPROTO_RTMPE (1L << 21)
1098 #define CURLPROTO_RTMPTE (1L << 22)
1099 #define CURLPROTO_RTMPS (1L << 23)
1100 #define CURLPROTO_RTMPTS (1L << 24)
1101 #define CURLPROTO_GOPHER (1L << 25)
1102 #define CURLPROTO_SMB (1L << 26)
1103 #define CURLPROTO_SMBS (1L << 27)
1104 #define CURLPROTO_MQTT (1L << 28)
1105 #define CURLPROTO_GOPHERS (1L << 29)
1106 #define CURLPROTO_ALL ((unsigned long)0xffffffff)
1107
1108
1109
1110
1111 #define CURLOPTTYPE_LONG 0
1112 #define CURLOPTTYPE_OBJECTPOINT 10000
1113 #define CURLOPTTYPE_FUNCTIONPOINT 20000
1114 #define CURLOPTTYPE_OFF_T 30000
1115 #define CURLOPTTYPE_BLOB 40000
1116
1117
1118
1119
1120 #define CURLOPT(na, t, nu) na = ((t) + (nu))
1121 #define CURLOPTDEPRECATED(na, t, nu, v, m) na CURL_DEPRECATED(v, m) \
1122 = ((t) + (nu))
1123
1124
1125
1126
1127 #define CURLOPTTYPE_STRINGPOINT CURLOPTTYPE_OBJECTPOINT
1128
1129
1130 #define CURLOPTTYPE_SLISTPOINT CURLOPTTYPE_OBJECTPOINT
1131
1132
1133 #define CURLOPTTYPE_CBPOINT CURLOPTTYPE_OBJECTPOINT
1134
1135
1136 #define CURLOPTTYPE_VALUES CURLOPTTYPE_LONG
1137
1138
1139
1140
1141
1142 typedef enum {
1143
1144 CURLOPT(CURLOPT_WRITEDATA, CURLOPTTYPE_CBPOINT, 1),
1145
1146
1147 CURLOPT(CURLOPT_URL, CURLOPTTYPE_STRINGPOINT, 2),
1148
1149
1150 CURLOPT(CURLOPT_PORT, CURLOPTTYPE_LONG, 3),
1151
1152
1153 CURLOPT(CURLOPT_PROXY, CURLOPTTYPE_STRINGPOINT, 4),
1154
1155
1156 CURLOPT(CURLOPT_USERPWD, CURLOPTTYPE_STRINGPOINT, 5),
1157
1158
1159 CURLOPT(CURLOPT_PROXYUSERPWD, CURLOPTTYPE_STRINGPOINT, 6),
1160
1161
1162 CURLOPT(CURLOPT_RANGE, CURLOPTTYPE_STRINGPOINT, 7),
1163
1164
1165
1166
1167 CURLOPT(CURLOPT_READDATA, CURLOPTTYPE_CBPOINT, 9),
1168
1169
1170
1171 CURLOPT(CURLOPT_ERRORBUFFER, CURLOPTTYPE_OBJECTPOINT, 10),
1172
1173
1174
1175 CURLOPT(CURLOPT_WRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 11),
1176
1177
1178
1179 CURLOPT(CURLOPT_READFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 12),
1180
1181
1182 CURLOPT(CURLOPT_TIMEOUT, CURLOPTTYPE_LONG, 13),
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193 CURLOPT(CURLOPT_INFILESIZE, CURLOPTTYPE_LONG, 14),
1194
1195
1196 CURLOPT(CURLOPT_POSTFIELDS, CURLOPTTYPE_OBJECTPOINT, 15),
1197
1198
1199 CURLOPT(CURLOPT_REFERER, CURLOPTTYPE_STRINGPOINT, 16),
1200
1201
1202
1203 CURLOPT(CURLOPT_FTPPORT, CURLOPTTYPE_STRINGPOINT, 17),
1204
1205
1206 CURLOPT(CURLOPT_USERAGENT, CURLOPTTYPE_STRINGPOINT, 18),
1207
1208
1209
1210
1211
1212
1213
1214
1215 CURLOPT(CURLOPT_LOW_SPEED_LIMIT, CURLOPTTYPE_LONG, 19),
1216
1217
1218 CURLOPT(CURLOPT_LOW_SPEED_TIME, CURLOPTTYPE_LONG, 20),
1219
1220
1221
1222
1223
1224
1225
1226 CURLOPT(CURLOPT_RESUME_FROM, CURLOPTTYPE_LONG, 21),
1227
1228
1229 CURLOPT(CURLOPT_COOKIE, CURLOPTTYPE_STRINGPOINT, 22),
1230
1231
1232
1233 CURLOPT(CURLOPT_HTTPHEADER, CURLOPTTYPE_SLISTPOINT, 23),
1234
1235
1236 CURLOPTDEPRECATED(CURLOPT_HTTPPOST, CURLOPTTYPE_OBJECTPOINT, 24,
1237 7.56.0, "Use CURLOPT_MIMEPOST"),
1238
1239
1240 CURLOPT(CURLOPT_SSLCERT, CURLOPTTYPE_STRINGPOINT, 25),
1241
1242
1243 CURLOPT(CURLOPT_KEYPASSWD, CURLOPTTYPE_STRINGPOINT, 26),
1244
1245
1246 CURLOPT(CURLOPT_CRLF, CURLOPTTYPE_LONG, 27),
1247
1248
1249 CURLOPT(CURLOPT_QUOTE, CURLOPTTYPE_SLISTPOINT, 28),
1250
1251
1252
1253 CURLOPT(CURLOPT_HEADERDATA, CURLOPTTYPE_CBPOINT, 29),
1254
1255
1256
1257 CURLOPT(CURLOPT_COOKIEFILE, CURLOPTTYPE_STRINGPOINT, 31),
1258
1259
1260
1261 CURLOPT(CURLOPT_SSLVERSION, CURLOPTTYPE_VALUES, 32),
1262
1263
1264 CURLOPT(CURLOPT_TIMECONDITION, CURLOPTTYPE_VALUES, 33),
1265
1266
1267
1268 CURLOPT(CURLOPT_TIMEVALUE, CURLOPTTYPE_LONG, 34),
1269
1270
1271
1272
1273
1274
1275
1276 CURLOPT(CURLOPT_CUSTOMREQUEST, CURLOPTTYPE_STRINGPOINT, 36),
1277
1278
1279 CURLOPT(CURLOPT_STDERR, CURLOPTTYPE_OBJECTPOINT, 37),
1280
1281
1282
1283
1284 CURLOPT(CURLOPT_POSTQUOTE, CURLOPTTYPE_SLISTPOINT, 39),
1285
1286
1287
1288
1289 CURLOPT(CURLOPT_VERBOSE, CURLOPTTYPE_LONG, 41),
1290
1291
1292 CURLOPT(CURLOPT_HEADER, CURLOPTTYPE_LONG, 42),
1293
1294
1295 CURLOPT(CURLOPT_NOPROGRESS, CURLOPTTYPE_LONG, 43),
1296
1297
1298 CURLOPT(CURLOPT_NOBODY, CURLOPTTYPE_LONG, 44),
1299
1300
1301 CURLOPT(CURLOPT_FAILONERROR, CURLOPTTYPE_LONG, 45),
1302
1303
1304 CURLOPT(CURLOPT_UPLOAD, CURLOPTTYPE_LONG, 46),
1305
1306
1307 CURLOPT(CURLOPT_POST, CURLOPTTYPE_LONG, 47),
1308
1309
1310 CURLOPT(CURLOPT_DIRLISTONLY, CURLOPTTYPE_LONG, 48),
1311
1312
1313 CURLOPT(CURLOPT_APPEND, CURLOPTTYPE_LONG, 50),
1314
1315
1316
1317 CURLOPT(CURLOPT_NETRC, CURLOPTTYPE_VALUES, 51),
1318
1319
1320 CURLOPT(CURLOPT_FOLLOWLOCATION, CURLOPTTYPE_LONG, 52),
1321
1322
1323 CURLOPT(CURLOPT_TRANSFERTEXT, CURLOPTTYPE_LONG, 53),
1324
1325
1326 CURLOPTDEPRECATED(CURLOPT_PUT, CURLOPTTYPE_LONG, 54,
1327 7.12.1, "Use CURLOPT_UPLOAD"),
1328
1329
1330
1331
1332
1333
1334
1335 CURLOPTDEPRECATED(CURLOPT_PROGRESSFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 56,
1336 7.32.0, "Use CURLOPT_XFERINFOFUNCTION"),
1337
1338
1339
1340 CURLOPT(CURLOPT_XFERINFODATA, CURLOPTTYPE_CBPOINT, 57),
1341 #define CURLOPT_PROGRESSDATA CURLOPT_XFERINFODATA
1342
1343
1344 CURLOPT(CURLOPT_AUTOREFERER, CURLOPTTYPE_LONG, 58),
1345
1346
1347
1348 CURLOPT(CURLOPT_PROXYPORT, CURLOPTTYPE_LONG, 59),
1349
1350
1351 CURLOPT(CURLOPT_POSTFIELDSIZE, CURLOPTTYPE_LONG, 60),
1352
1353
1354 CURLOPT(CURLOPT_HTTPPROXYTUNNEL, CURLOPTTYPE_LONG, 61),
1355
1356
1357 CURLOPT(CURLOPT_INTERFACE, CURLOPTTYPE_STRINGPOINT, 62),
1358
1359
1360
1361
1362 CURLOPTDEPRECATED(CURLOPT_KRBLEVEL, CURLOPTTYPE_STRINGPOINT, 63,
1363 8.17.0, "removed"),
1364
1365
1366 CURLOPT(CURLOPT_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 64),
1367
1368
1369
1370 CURLOPT(CURLOPT_CAINFO, CURLOPTTYPE_STRINGPOINT, 65),
1371
1372
1373
1374
1375
1376 CURLOPT(CURLOPT_MAXREDIRS, CURLOPTTYPE_LONG, 68),
1377
1378
1379
1380 CURLOPT(CURLOPT_FILETIME, CURLOPTTYPE_LONG, 69),
1381
1382
1383 CURLOPT(CURLOPT_TELNETOPTIONS, CURLOPTTYPE_SLISTPOINT, 70),
1384
1385
1386 CURLOPT(CURLOPT_MAXCONNECTS, CURLOPTTYPE_LONG, 71),
1387
1388
1389
1390
1391
1392
1393
1394 CURLOPT(CURLOPT_FRESH_CONNECT, CURLOPTTYPE_LONG, 74),
1395
1396
1397
1398
1399 CURLOPT(CURLOPT_FORBID_REUSE, CURLOPTTYPE_LONG, 75),
1400
1401
1402
1403 CURLOPTDEPRECATED(CURLOPT_RANDOM_FILE, CURLOPTTYPE_STRINGPOINT, 76,
1404 7.84.0, "Serves no purpose anymore"),
1405
1406
1407 CURLOPTDEPRECATED(CURLOPT_EGDSOCKET, CURLOPTTYPE_STRINGPOINT, 77,
1408 7.84.0, "Serves no purpose anymore"),
1409
1410
1411
1412 CURLOPT(CURLOPT_CONNECTTIMEOUT, CURLOPTTYPE_LONG, 78),
1413
1414
1415
1416 CURLOPT(CURLOPT_HEADERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 79),
1417
1418
1419
1420
1421 CURLOPT(CURLOPT_HTTPGET, CURLOPTTYPE_LONG, 80),
1422
1423
1424
1425
1426 CURLOPT(CURLOPT_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 81),
1427
1428
1429
1430 CURLOPT(CURLOPT_COOKIEJAR, CURLOPTTYPE_STRINGPOINT, 82),
1431
1432
1433 CURLOPT(CURLOPT_SSL_CIPHER_LIST, CURLOPTTYPE_STRINGPOINT, 83),
1434
1435
1436
1437 CURLOPT(CURLOPT_HTTP_VERSION, CURLOPTTYPE_VALUES, 84),
1438
1439
1440
1441
1442 CURLOPT(CURLOPT_FTP_USE_EPSV, CURLOPTTYPE_LONG, 85),
1443
1444
1445 CURLOPT(CURLOPT_SSLCERTTYPE, CURLOPTTYPE_STRINGPOINT, 86),
1446
1447
1448 CURLOPT(CURLOPT_SSLKEY, CURLOPTTYPE_STRINGPOINT, 87),
1449
1450
1451 CURLOPT(CURLOPT_SSLKEYTYPE, CURLOPTTYPE_STRINGPOINT, 88),
1452
1453
1454 CURLOPT(CURLOPT_SSLENGINE, CURLOPTTYPE_STRINGPOINT, 89),
1455
1456
1457
1458
1459 CURLOPT(CURLOPT_SSLENGINE_DEFAULT, CURLOPTTYPE_LONG, 90),
1460
1461
1462
1463 CURLOPTDEPRECATED(CURLOPT_DNS_USE_GLOBAL_CACHE, CURLOPTTYPE_LONG, 91,
1464 7.11.1, "Use CURLOPT_SHARE"),
1465
1466
1467 CURLOPT(CURLOPT_DNS_CACHE_TIMEOUT, CURLOPTTYPE_LONG, 92),
1468
1469
1470 CURLOPT(CURLOPT_PREQUOTE, CURLOPTTYPE_SLISTPOINT, 93),
1471
1472
1473 CURLOPT(CURLOPT_DEBUGFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 94),
1474
1475
1476 CURLOPT(CURLOPT_DEBUGDATA, CURLOPTTYPE_CBPOINT, 95),
1477
1478
1479 CURLOPT(CURLOPT_COOKIESESSION, CURLOPTTYPE_LONG, 96),
1480
1481
1482
1483 CURLOPT(CURLOPT_CAPATH, CURLOPTTYPE_STRINGPOINT, 97),
1484
1485
1486 CURLOPT(CURLOPT_BUFFERSIZE, CURLOPTTYPE_LONG, 98),
1487
1488
1489
1490
1491 CURLOPT(CURLOPT_NOSIGNAL, CURLOPTTYPE_LONG, 99),
1492
1493
1494 CURLOPT(CURLOPT_SHARE, CURLOPTTYPE_OBJECTPOINT, 100),
1495
1496
1497
1498
1499 CURLOPT(CURLOPT_PROXYTYPE, CURLOPTTYPE_VALUES, 101),
1500
1501
1502
1503
1504 CURLOPT(CURLOPT_ACCEPT_ENCODING, CURLOPTTYPE_STRINGPOINT, 102),
1505
1506
1507 CURLOPT(CURLOPT_PRIVATE, CURLOPTTYPE_OBJECTPOINT, 103),
1508
1509
1510 CURLOPT(CURLOPT_HTTP200ALIASES, CURLOPTTYPE_SLISTPOINT, 104),
1511
1512
1513
1514
1515 CURLOPT(CURLOPT_UNRESTRICTED_AUTH, CURLOPTTYPE_LONG, 105),
1516
1517
1518
1519
1520 CURLOPT(CURLOPT_FTP_USE_EPRT, CURLOPTTYPE_LONG, 106),
1521
1522
1523
1524
1525 CURLOPT(CURLOPT_HTTPAUTH, CURLOPTTYPE_VALUES, 107),
1526
1527
1528
1529
1530 CURLOPT(CURLOPT_SSL_CTX_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 108),
1531
1532
1533
1534 CURLOPT(CURLOPT_SSL_CTX_DATA, CURLOPTTYPE_CBPOINT, 109),
1535
1536
1537
1538
1539
1540 CURLOPT(CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPTTYPE_LONG, 110),
1541
1542
1543
1544
1545 CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111),
1546
1547
1548
1549
1550
1551 CURLOPT(CURLOPT_SERVER_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
1552
1553
1554
1555
1556 CURLOPT(CURLOPT_IPRESOLVE, CURLOPTTYPE_VALUES, 113),
1557
1558
1559
1560
1561
1562
1563 CURLOPT(CURLOPT_MAXFILESIZE, CURLOPTTYPE_LONG, 114),
1564
1565
1566
1567
1568 CURLOPT(CURLOPT_INFILESIZE_LARGE, CURLOPTTYPE_OFF_T, 115),
1569
1570
1571
1572
1573 CURLOPT(CURLOPT_RESUME_FROM_LARGE, CURLOPTTYPE_OFF_T, 116),
1574
1575
1576
1577
1578 CURLOPT(CURLOPT_MAXFILESIZE_LARGE, CURLOPTTYPE_OFF_T, 117),
1579
1580
1581
1582
1583
1584 CURLOPT(CURLOPT_NETRC_FILE, CURLOPTTYPE_STRINGPOINT, 118),
1585
1586
1587
1588
1589
1590
1591 CURLOPT(CURLOPT_USE_SSL, CURLOPTTYPE_VALUES, 119),
1592
1593
1594 CURLOPT(CURLOPT_POSTFIELDSIZE_LARGE, CURLOPTTYPE_OFF_T, 120),
1595
1596
1597 CURLOPT(CURLOPT_TCP_NODELAY, CURLOPTTYPE_LONG, 121),
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617 CURLOPT(CURLOPT_FTPSSLAUTH, CURLOPTTYPE_VALUES, 129),
1618
1619 CURLOPTDEPRECATED(CURLOPT_IOCTLFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 130,
1620 7.18.0, "Use CURLOPT_SEEKFUNCTION"),
1621 CURLOPTDEPRECATED(CURLOPT_IOCTLDATA, CURLOPTTYPE_CBPOINT, 131,
1622 7.18.0, "Use CURLOPT_SEEKDATA"),
1623
1624
1625
1626
1627
1628
1629 CURLOPT(CURLOPT_FTP_ACCOUNT, CURLOPTTYPE_STRINGPOINT, 134),
1630
1631
1632 CURLOPT(CURLOPT_COOKIELIST, CURLOPTTYPE_STRINGPOINT, 135),
1633
1634
1635 CURLOPT(CURLOPT_IGNORE_CONTENT_LENGTH, CURLOPTTYPE_LONG, 136),
1636
1637
1638
1639
1640
1641 CURLOPT(CURLOPT_FTP_SKIP_PASV_IP, CURLOPTTYPE_LONG, 137),
1642
1643
1644
1645 CURLOPT(CURLOPT_FTP_FILEMETHOD, CURLOPTTYPE_VALUES, 138),
1646
1647
1648 CURLOPT(CURLOPT_LOCALPORT, CURLOPTTYPE_LONG, 139),
1649
1650
1651
1652
1653 CURLOPT(CURLOPT_LOCALPORTRANGE, CURLOPTTYPE_LONG, 140),
1654
1655
1656
1657 CURLOPT(CURLOPT_CONNECT_ONLY, CURLOPTTYPE_LONG, 141),
1658
1659
1660
1661 CURLOPTDEPRECATED(CURLOPT_CONV_FROM_NETWORK_FUNCTION,
1662 CURLOPTTYPE_FUNCTIONPOINT, 142,
1663 7.82.0, "Serves no purpose anymore"),
1664
1665
1666
1667 CURLOPTDEPRECATED(CURLOPT_CONV_TO_NETWORK_FUNCTION,
1668 CURLOPTTYPE_FUNCTIONPOINT, 143,
1669 7.82.0, "Serves no purpose anymore"),
1670
1671
1672
1673
1674 CURLOPTDEPRECATED(CURLOPT_CONV_FROM_UTF8_FUNCTION,
1675 CURLOPTTYPE_FUNCTIONPOINT, 144,
1676 7.82.0, "Serves no purpose anymore"),
1677
1678
1679
1680 CURLOPT(CURLOPT_MAX_SEND_SPEED_LARGE, CURLOPTTYPE_OFF_T, 145),
1681 CURLOPT(CURLOPT_MAX_RECV_SPEED_LARGE, CURLOPTTYPE_OFF_T, 146),
1682
1683
1684 CURLOPT(CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPTTYPE_STRINGPOINT, 147),
1685
1686
1687 CURLOPT(CURLOPT_SOCKOPTFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 148),
1688 CURLOPT(CURLOPT_SOCKOPTDATA, CURLOPTTYPE_CBPOINT, 149),
1689
1690
1691
1692 CURLOPT(CURLOPT_SSL_SESSIONID_CACHE, CURLOPTTYPE_LONG, 150),
1693
1694
1695 CURLOPT(CURLOPT_SSH_AUTH_TYPES, CURLOPTTYPE_VALUES, 151),
1696
1697
1698 CURLOPT(CURLOPT_SSH_PUBLIC_KEYFILE, CURLOPTTYPE_STRINGPOINT, 152),
1699 CURLOPT(CURLOPT_SSH_PRIVATE_KEYFILE, CURLOPTTYPE_STRINGPOINT, 153),
1700
1701
1702 CURLOPT(CURLOPT_FTP_SSL_CCC, CURLOPTTYPE_LONG, 154),
1703
1704
1705 CURLOPT(CURLOPT_TIMEOUT_MS, CURLOPTTYPE_LONG, 155),
1706 CURLOPT(CURLOPT_CONNECTTIMEOUT_MS, CURLOPTTYPE_LONG, 156),
1707
1708
1709
1710 CURLOPT(CURLOPT_HTTP_TRANSFER_DECODING, CURLOPTTYPE_LONG, 157),
1711 CURLOPT(CURLOPT_HTTP_CONTENT_DECODING, CURLOPTTYPE_LONG, 158),
1712
1713
1714
1715 CURLOPT(CURLOPT_NEW_FILE_PERMS, CURLOPTTYPE_LONG, 159),
1716 CURLOPT(CURLOPT_NEW_DIRECTORY_PERMS, CURLOPTTYPE_LONG, 160),
1717
1718
1719
1720 CURLOPT(CURLOPT_POSTREDIR, CURLOPTTYPE_VALUES, 161),
1721
1722
1723 CURLOPT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, CURLOPTTYPE_STRINGPOINT, 162),
1724
1725
1726
1727
1728
1729 CURLOPT(CURLOPT_OPENSOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 163),
1730 CURLOPT(CURLOPT_OPENSOCKETDATA, CURLOPTTYPE_CBPOINT, 164),
1731
1732
1733 CURLOPT(CURLOPT_COPYPOSTFIELDS, CURLOPTTYPE_OBJECTPOINT, 165),
1734
1735
1736 CURLOPT(CURLOPT_PROXY_TRANSFER_MODE, CURLOPTTYPE_LONG, 166),
1737
1738
1739 CURLOPT(CURLOPT_SEEKFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 167),
1740 CURLOPT(CURLOPT_SEEKDATA, CURLOPTTYPE_CBPOINT, 168),
1741
1742
1743 CURLOPT(CURLOPT_CRLFILE, CURLOPTTYPE_STRINGPOINT, 169),
1744
1745
1746 CURLOPT(CURLOPT_ISSUERCERT, CURLOPTTYPE_STRINGPOINT, 170),
1747
1748
1749 CURLOPT(CURLOPT_ADDRESS_SCOPE, CURLOPTTYPE_LONG, 171),
1750
1751
1752
1753 CURLOPT(CURLOPT_CERTINFO, CURLOPTTYPE_LONG, 172),
1754
1755
1756 CURLOPT(CURLOPT_USERNAME, CURLOPTTYPE_STRINGPOINT, 173),
1757 CURLOPT(CURLOPT_PASSWORD, CURLOPTTYPE_STRINGPOINT, 174),
1758
1759
1760 CURLOPT(CURLOPT_PROXYUSERNAME, CURLOPTTYPE_STRINGPOINT, 175),
1761 CURLOPT(CURLOPT_PROXYPASSWORD, CURLOPTTYPE_STRINGPOINT, 176),
1762
1763
1764
1765
1766
1767
1768
1769
1770 CURLOPT(CURLOPT_NOPROXY, CURLOPTTYPE_STRINGPOINT, 177),
1771
1772
1773 CURLOPT(CURLOPT_TFTP_BLKSIZE, CURLOPTTYPE_LONG, 178),
1774
1775
1776
1777 CURLOPTDEPRECATED(CURLOPT_SOCKS5_GSSAPI_SERVICE,
1778 CURLOPTTYPE_STRINGPOINT, 179,
1779 7.49.0, "Use CURLOPT_PROXY_SERVICE_NAME"),
1780
1781
1782 CURLOPT(CURLOPT_SOCKS5_GSSAPI_NEC, CURLOPTTYPE_LONG, 180),
1783
1784
1785
1786
1787
1788 CURLOPTDEPRECATED(CURLOPT_PROTOCOLS, CURLOPTTYPE_LONG, 181,
1789 7.85.0, "Use CURLOPT_PROTOCOLS_STR"),
1790
1791
1792
1793
1794 CURLOPTDEPRECATED(CURLOPT_REDIR_PROTOCOLS, CURLOPTTYPE_LONG, 182,
1795 7.85.0, "Use CURLOPT_REDIR_PROTOCOLS_STR"),
1796
1797
1798 CURLOPT(CURLOPT_SSH_KNOWNHOSTS, CURLOPTTYPE_STRINGPOINT, 183),
1799
1800
1801
1802 CURLOPT(CURLOPT_SSH_KEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 184),
1803
1804
1805 CURLOPT(CURLOPT_SSH_KEYDATA, CURLOPTTYPE_CBPOINT, 185),
1806
1807
1808 CURLOPT(CURLOPT_MAIL_FROM, CURLOPTTYPE_STRINGPOINT, 186),
1809
1810
1811 CURLOPT(CURLOPT_MAIL_RCPT, CURLOPTTYPE_SLISTPOINT, 187),
1812
1813
1814 CURLOPT(CURLOPT_FTP_USE_PRET, CURLOPTTYPE_LONG, 188),
1815
1816
1817 CURLOPT(CURLOPT_RTSP_REQUEST, CURLOPTTYPE_VALUES, 189),
1818
1819
1820 CURLOPT(CURLOPT_RTSP_SESSION_ID, CURLOPTTYPE_STRINGPOINT, 190),
1821
1822
1823 CURLOPT(CURLOPT_RTSP_STREAM_URI, CURLOPTTYPE_STRINGPOINT, 191),
1824
1825
1826 CURLOPT(CURLOPT_RTSP_TRANSPORT, CURLOPTTYPE_STRINGPOINT, 192),
1827
1828
1829 CURLOPT(CURLOPT_RTSP_CLIENT_CSEQ, CURLOPTTYPE_LONG, 193),
1830
1831
1832 CURLOPT(CURLOPT_RTSP_SERVER_CSEQ, CURLOPTTYPE_LONG, 194),
1833
1834
1835 CURLOPT(CURLOPT_INTERLEAVEDATA, CURLOPTTYPE_CBPOINT, 195),
1836
1837
1838 CURLOPT(CURLOPT_INTERLEAVEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 196),
1839
1840
1841 CURLOPT(CURLOPT_WILDCARDMATCH, CURLOPTTYPE_LONG, 197),
1842
1843
1844
1845 CURLOPT(CURLOPT_CHUNK_BGN_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 198),
1846
1847
1848
1849 CURLOPT(CURLOPT_CHUNK_END_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 199),
1850
1851
1852 CURLOPT(CURLOPT_FNMATCH_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 200),
1853
1854
1855 CURLOPT(CURLOPT_CHUNK_DATA, CURLOPTTYPE_CBPOINT, 201),
1856
1857
1858 CURLOPT(CURLOPT_FNMATCH_DATA, CURLOPTTYPE_CBPOINT, 202),
1859
1860
1861 CURLOPT(CURLOPT_RESOLVE, CURLOPTTYPE_SLISTPOINT, 203),
1862
1863
1864 CURLOPT(CURLOPT_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 204),
1865
1866
1867 CURLOPT(CURLOPT_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 205),
1868
1869
1870 CURLOPT(CURLOPT_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 206),
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880 CURLOPT(CURLOPT_TRANSFER_ENCODING, CURLOPTTYPE_LONG, 207),
1881
1882
1883
1884 CURLOPT(CURLOPT_CLOSESOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 208),
1885 CURLOPT(CURLOPT_CLOSESOCKETDATA, CURLOPTTYPE_CBPOINT, 209),
1886
1887
1888 CURLOPT(CURLOPT_GSSAPI_DELEGATION, CURLOPTTYPE_VALUES, 210),
1889
1890
1891
1892 CURLOPT(CURLOPT_DNS_SERVERS, CURLOPTTYPE_STRINGPOINT, 211),
1893
1894
1895
1896 CURLOPT(CURLOPT_ACCEPTTIMEOUT_MS, CURLOPTTYPE_LONG, 212),
1897
1898
1899 CURLOPT(CURLOPT_TCP_KEEPALIVE, CURLOPTTYPE_LONG, 213),
1900
1901
1902 CURLOPT(CURLOPT_TCP_KEEPIDLE, CURLOPTTYPE_LONG, 214),
1903 CURLOPT(CURLOPT_TCP_KEEPINTVL, CURLOPTTYPE_LONG, 215),
1904
1905
1906 CURLOPT(CURLOPT_SSL_OPTIONS, CURLOPTTYPE_VALUES, 216),
1907
1908
1909 CURLOPT(CURLOPT_MAIL_AUTH, CURLOPTTYPE_STRINGPOINT, 217),
1910
1911
1912 CURLOPT(CURLOPT_SASL_IR, CURLOPTTYPE_LONG, 218),
1913
1914
1915
1916
1917 CURLOPT(CURLOPT_XFERINFOFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 219),
1918
1919
1920 CURLOPT(CURLOPT_XOAUTH2_BEARER, CURLOPTTYPE_STRINGPOINT, 220),
1921
1922
1923
1924
1925 CURLOPT(CURLOPT_DNS_INTERFACE, CURLOPTTYPE_STRINGPOINT, 221),
1926
1927
1928
1929 CURLOPT(CURLOPT_DNS_LOCAL_IP4, CURLOPTTYPE_STRINGPOINT, 222),
1930
1931
1932
1933 CURLOPT(CURLOPT_DNS_LOCAL_IP6, CURLOPTTYPE_STRINGPOINT, 223),
1934
1935
1936 CURLOPT(CURLOPT_LOGIN_OPTIONS, CURLOPTTYPE_STRINGPOINT, 224),
1937
1938
1939 CURLOPTDEPRECATED(CURLOPT_SSL_ENABLE_NPN, CURLOPTTYPE_LONG, 225,
1940 7.86.0, "Has no function"),
1941
1942
1943 CURLOPT(CURLOPT_SSL_ENABLE_ALPN, CURLOPTTYPE_LONG, 226),
1944
1945
1946
1947 CURLOPT(CURLOPT_EXPECT_100_TIMEOUT_MS, CURLOPTTYPE_LONG, 227),
1948
1949
1950
1951 CURLOPT(CURLOPT_PROXYHEADER, CURLOPTTYPE_SLISTPOINT, 228),
1952
1953
1954 CURLOPT(CURLOPT_HEADEROPT, CURLOPTTYPE_VALUES, 229),
1955
1956
1957 CURLOPT(CURLOPT_PINNEDPUBLICKEY, CURLOPTTYPE_STRINGPOINT, 230),
1958
1959
1960 CURLOPT(CURLOPT_UNIX_SOCKET_PATH, CURLOPTTYPE_STRINGPOINT, 231),
1961
1962
1963 CURLOPT(CURLOPT_SSL_VERIFYSTATUS, CURLOPTTYPE_LONG, 232),
1964
1965
1966 CURLOPTDEPRECATED(CURLOPT_SSL_FALSESTART, CURLOPTTYPE_LONG, 233,
1967 8.15.0, "Has no function"),
1968
1969
1970 CURLOPT(CURLOPT_PATH_AS_IS, CURLOPTTYPE_LONG, 234),
1971
1972
1973 CURLOPT(CURLOPT_PROXY_SERVICE_NAME, CURLOPTTYPE_STRINGPOINT, 235),
1974
1975
1976 CURLOPT(CURLOPT_SERVICE_NAME, CURLOPTTYPE_STRINGPOINT, 236),
1977
1978
1979 CURLOPT(CURLOPT_PIPEWAIT, CURLOPTTYPE_LONG, 237),
1980
1981
1982 CURLOPT(CURLOPT_DEFAULT_PROTOCOL, CURLOPTTYPE_STRINGPOINT, 238),
1983
1984
1985 CURLOPT(CURLOPT_STREAM_WEIGHT, CURLOPTTYPE_LONG, 239),
1986
1987
1988 CURLOPT(CURLOPT_STREAM_DEPENDS, CURLOPTTYPE_OBJECTPOINT, 240),
1989
1990
1991 CURLOPT(CURLOPT_STREAM_DEPENDS_E, CURLOPTTYPE_OBJECTPOINT, 241),
1992
1993
1994 CURLOPT(CURLOPT_TFTP_NO_OPTIONS, CURLOPTTYPE_LONG, 242),
1995
1996
1997
1998 CURLOPT(CURLOPT_CONNECT_TO, CURLOPTTYPE_SLISTPOINT, 243),
1999
2000
2001 CURLOPT(CURLOPT_TCP_FASTOPEN, CURLOPTTYPE_LONG, 244),
2002
2003
2004
2005 CURLOPT(CURLOPT_KEEP_SENDING_ON_ERROR, CURLOPTTYPE_LONG, 245),
2006
2007
2008
2009 CURLOPT(CURLOPT_PROXY_CAINFO, CURLOPTTYPE_STRINGPOINT, 246),
2010
2011
2012
2013 CURLOPT(CURLOPT_PROXY_CAPATH, CURLOPTTYPE_STRINGPOINT, 247),
2014
2015
2016
2017 CURLOPT(CURLOPT_PROXY_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 248),
2018
2019
2020
2021
2022 CURLOPT(CURLOPT_PROXY_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 249),
2023
2024
2025
2026 CURLOPT(CURLOPT_PROXY_SSLVERSION, CURLOPTTYPE_VALUES, 250),
2027
2028
2029 CURLOPT(CURLOPT_PROXY_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 251),
2030
2031
2032 CURLOPT(CURLOPT_PROXY_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 252),
2033
2034
2035 CURLOPT(CURLOPT_PROXY_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 253),
2036
2037
2038 CURLOPT(CURLOPT_PROXY_SSLCERT, CURLOPTTYPE_STRINGPOINT, 254),
2039
2040
2041
2042 CURLOPT(CURLOPT_PROXY_SSLCERTTYPE, CURLOPTTYPE_STRINGPOINT, 255),
2043
2044
2045 CURLOPT(CURLOPT_PROXY_SSLKEY, CURLOPTTYPE_STRINGPOINT, 256),
2046
2047
2048
2049 CURLOPT(CURLOPT_PROXY_SSLKEYTYPE, CURLOPTTYPE_STRINGPOINT, 257),
2050
2051
2052 CURLOPT(CURLOPT_PROXY_KEYPASSWD, CURLOPTTYPE_STRINGPOINT, 258),
2053
2054
2055 CURLOPT(CURLOPT_PROXY_SSL_CIPHER_LIST, CURLOPTTYPE_STRINGPOINT, 259),
2056
2057
2058 CURLOPT(CURLOPT_PROXY_CRLFILE, CURLOPTTYPE_STRINGPOINT, 260),
2059
2060
2061
2062 CURLOPT(CURLOPT_PROXY_SSL_OPTIONS, CURLOPTTYPE_LONG, 261),
2063
2064
2065 CURLOPT(CURLOPT_PRE_PROXY, CURLOPTTYPE_STRINGPOINT, 262),
2066
2067
2068
2069 CURLOPT(CURLOPT_PROXY_PINNEDPUBLICKEY, CURLOPTTYPE_STRINGPOINT, 263),
2070
2071
2072 CURLOPT(CURLOPT_ABSTRACT_UNIX_SOCKET, CURLOPTTYPE_STRINGPOINT, 264),
2073
2074
2075 CURLOPT(CURLOPT_SUPPRESS_CONNECT_HEADERS, CURLOPTTYPE_LONG, 265),
2076
2077
2078 CURLOPT(CURLOPT_REQUEST_TARGET, CURLOPTTYPE_STRINGPOINT, 266),
2079
2080
2081 CURLOPT(CURLOPT_SOCKS5_AUTH, CURLOPTTYPE_LONG, 267),
2082
2083
2084 CURLOPT(CURLOPT_SSH_COMPRESSION, CURLOPTTYPE_LONG, 268),
2085
2086
2087 CURLOPT(CURLOPT_MIMEPOST, CURLOPTTYPE_OBJECTPOINT, 269),
2088
2089
2090
2091 CURLOPT(CURLOPT_TIMEVALUE_LARGE, CURLOPTTYPE_OFF_T, 270),
2092
2093
2094 CURLOPT(CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, CURLOPTTYPE_LONG, 271),
2095
2096
2097 CURLOPT(CURLOPT_RESOLVER_START_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 272),
2098
2099
2100 CURLOPT(CURLOPT_RESOLVER_START_DATA, CURLOPTTYPE_CBPOINT, 273),
2101
2102
2103 CURLOPT(CURLOPT_HAPROXYPROTOCOL, CURLOPTTYPE_LONG, 274),
2104
2105
2106 CURLOPT(CURLOPT_DNS_SHUFFLE_ADDRESSES, CURLOPTTYPE_LONG, 275),
2107
2108
2109 CURLOPT(CURLOPT_TLS13_CIPHERS, CURLOPTTYPE_STRINGPOINT, 276),
2110 CURLOPT(CURLOPT_PROXY_TLS13_CIPHERS, CURLOPTTYPE_STRINGPOINT, 277),
2111
2112
2113 CURLOPT(CURLOPT_DISALLOW_USERNAME_IN_URL, CURLOPTTYPE_LONG, 278),
2114
2115
2116 CURLOPT(CURLOPT_DOH_URL, CURLOPTTYPE_STRINGPOINT, 279),
2117
2118
2119 CURLOPT(CURLOPT_UPLOAD_BUFFERSIZE, CURLOPTTYPE_LONG, 280),
2120
2121
2122 CURLOPT(CURLOPT_UPKEEP_INTERVAL_MS, CURLOPTTYPE_LONG, 281),
2123
2124
2125 CURLOPT(CURLOPT_CURLU, CURLOPTTYPE_OBJECTPOINT, 282),
2126
2127
2128 CURLOPT(CURLOPT_TRAILERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 283),
2129
2130
2131 CURLOPT(CURLOPT_TRAILERDATA, CURLOPTTYPE_CBPOINT, 284),
2132
2133
2134 CURLOPT(CURLOPT_HTTP09_ALLOWED, CURLOPTTYPE_LONG, 285),
2135
2136
2137 CURLOPT(CURLOPT_ALTSVC_CTRL, CURLOPTTYPE_LONG, 286),
2138
2139
2140 CURLOPT(CURLOPT_ALTSVC, CURLOPTTYPE_STRINGPOINT, 287),
2141
2142
2143
2144 CURLOPT(CURLOPT_MAXAGE_CONN, CURLOPTTYPE_LONG, 288),
2145
2146
2147 CURLOPT(CURLOPT_SASL_AUTHZID, CURLOPTTYPE_STRINGPOINT, 289),
2148
2149
2150 CURLOPT(CURLOPT_MAIL_RCPT_ALLOWFAILS, CURLOPTTYPE_LONG, 290),
2151
2152
2153 CURLOPT(CURLOPT_SSLCERT_BLOB, CURLOPTTYPE_BLOB, 291),
2154 CURLOPT(CURLOPT_SSLKEY_BLOB, CURLOPTTYPE_BLOB, 292),
2155 CURLOPT(CURLOPT_PROXY_SSLCERT_BLOB, CURLOPTTYPE_BLOB, 293),
2156 CURLOPT(CURLOPT_PROXY_SSLKEY_BLOB, CURLOPTTYPE_BLOB, 294),
2157 CURLOPT(CURLOPT_ISSUERCERT_BLOB, CURLOPTTYPE_BLOB, 295),
2158
2159
2160 CURLOPT(CURLOPT_PROXY_ISSUERCERT, CURLOPTTYPE_STRINGPOINT, 296),
2161 CURLOPT(CURLOPT_PROXY_ISSUERCERT_BLOB, CURLOPTTYPE_BLOB, 297),
2162
2163
2164
2165
2166
2167 CURLOPT(CURLOPT_SSL_EC_CURVES, CURLOPTTYPE_STRINGPOINT, 298),
2168
2169
2170 CURLOPT(CURLOPT_HSTS_CTRL, CURLOPTTYPE_LONG, 299),
2171
2172 CURLOPT(CURLOPT_HSTS, CURLOPTTYPE_STRINGPOINT, 300),
2173
2174
2175 CURLOPT(CURLOPT_HSTSREADFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 301),
2176 CURLOPT(CURLOPT_HSTSREADDATA, CURLOPTTYPE_CBPOINT, 302),
2177
2178
2179 CURLOPT(CURLOPT_HSTSWRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 303),
2180 CURLOPT(CURLOPT_HSTSWRITEDATA, CURLOPTTYPE_CBPOINT, 304),
2181
2182
2183 CURLOPT(CURLOPT_AWS_SIGV4, CURLOPTTYPE_STRINGPOINT, 305),
2184
2185
2186 CURLOPT(CURLOPT_DOH_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 306),
2187
2188
2189 CURLOPT(CURLOPT_DOH_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 307),
2190
2191
2192 CURLOPT(CURLOPT_DOH_SSL_VERIFYSTATUS, CURLOPTTYPE_LONG, 308),
2193
2194
2195
2196 CURLOPT(CURLOPT_CAINFO_BLOB, CURLOPTTYPE_BLOB, 309),
2197
2198
2199
2200 CURLOPT(CURLOPT_PROXY_CAINFO_BLOB, CURLOPTTYPE_BLOB, 310),
2201
2202
2203 CURLOPT(CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256, CURLOPTTYPE_STRINGPOINT, 311),
2204
2205
2206
2207 CURLOPT(CURLOPT_PREREQFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 312),
2208
2209
2210 CURLOPT(CURLOPT_PREREQDATA, CURLOPTTYPE_CBPOINT, 313),
2211
2212
2213
2214 CURLOPT(CURLOPT_MAXLIFETIME_CONN, CURLOPTTYPE_LONG, 314),
2215
2216
2217 CURLOPT(CURLOPT_MIME_OPTIONS, CURLOPTTYPE_LONG, 315),
2218
2219
2220
2221 CURLOPT(CURLOPT_SSH_HOSTKEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 316),
2222
2223
2224 CURLOPT(CURLOPT_SSH_HOSTKEYDATA, CURLOPTTYPE_CBPOINT, 317),
2225
2226
2227
2228
2229
2230 CURLOPT(CURLOPT_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 318),
2231
2232
2233 CURLOPT(CURLOPT_REDIR_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 319),
2234
2235
2236 CURLOPT(CURLOPT_WS_OPTIONS, CURLOPTTYPE_LONG, 320),
2237
2238
2239 CURLOPT(CURLOPT_CA_CACHE_TIMEOUT, CURLOPTTYPE_LONG, 321),
2240
2241
2242 CURLOPT(CURLOPT_QUICK_EXIT, CURLOPTTYPE_LONG, 322),
2243
2244
2245 CURLOPT(CURLOPT_HAPROXY_CLIENT_IP, CURLOPTTYPE_STRINGPOINT, 323),
2246
2247
2248 CURLOPT(CURLOPT_SERVER_RESPONSE_TIMEOUT_MS, CURLOPTTYPE_LONG, 324),
2249
2250
2251 CURLOPT(CURLOPT_ECH, CURLOPTTYPE_STRINGPOINT, 325),
2252
2253
2254 CURLOPT(CURLOPT_TCP_KEEPCNT, CURLOPTTYPE_LONG, 326),
2255
2256 CURLOPT(CURLOPT_UPLOAD_FLAGS, CURLOPTTYPE_LONG, 327),
2257
2258
2259 CURLOPT(CURLOPT_SSL_SIGNATURE_ALGORITHMS, CURLOPTTYPE_STRINGPOINT, 328),
2260
2261 CURLOPT_LASTENTRY
2262 } CURLoption;
2263
2264 #ifndef CURL_NO_OLDIES
2265
2266
2267
2268
2269
2270
2271 #define CURLOPT_POST301 CURLOPT_POSTREDIR
2272
2273
2274
2275
2276 #define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD
2277 #define CURLOPT_FTPAPPEND CURLOPT_APPEND
2278 #define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY
2279 #define CURLOPT_FTP_SSL CURLOPT_USE_SSL
2280
2281
2282
2283 #define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
2284 #define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
2285
2286 #define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT
2287
2288
2289 #define CURLOPT_MAIL_RCPT_ALLLOWFAILS CURLOPT_MAIL_RCPT_ALLOWFAILS
2290
2291 #else
2292
2293 #undef CURLOPT_DNS_USE_GLOBAL_CACHE
2294 #endif
2295
2296
2297
2298
2299 #define CURL_IPRESOLVE_WHATEVER 0L
2300
2301 #define CURL_IPRESOLVE_V4 1L
2302 #define CURL_IPRESOLVE_V6 2L
2303
2304
2305 #define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
2306
2307
2308 #define CURL_HTTP_VERSION_NONE 0L
2309
2310
2311 #define CURL_HTTP_VERSION_1_0 1L
2312 #define CURL_HTTP_VERSION_1_1 2L
2313 #define CURL_HTTP_VERSION_2_0 3L
2314 #define CURL_HTTP_VERSION_2TLS 4L
2315
2316 #define CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 5L
2317
2318 #define CURL_HTTP_VERSION_3 30L
2319
2320
2321
2322 #define CURL_HTTP_VERSION_3ONLY 31L
2323
2324
2325 #define CURL_HTTP_VERSION_LAST 32L
2326
2327
2328
2329
2330 #define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0
2331
2332
2333
2334
2335
2336 #define CURL_RTSPREQ_NONE 0L
2337 #define CURL_RTSPREQ_OPTIONS 1L
2338 #define CURL_RTSPREQ_DESCRIBE 2L
2339 #define CURL_RTSPREQ_ANNOUNCE 3L
2340 #define CURL_RTSPREQ_SETUP 4L
2341 #define CURL_RTSPREQ_PLAY 5L
2342 #define CURL_RTSPREQ_PAUSE 6L
2343 #define CURL_RTSPREQ_TEARDOWN 7L
2344 #define CURL_RTSPREQ_GET_PARAMETER 8L
2345 #define CURL_RTSPREQ_SET_PARAMETER 9L
2346 #define CURL_RTSPREQ_RECORD 10L
2347 #define CURL_RTSPREQ_RECEIVE 11L
2348 #define CURL_RTSPREQ_LAST 12L
2349
2350
2351 #define CURL_NETRC_IGNORED 0L
2352
2353 #define CURL_NETRC_OPTIONAL 1L
2354
2355 #define CURL_NETRC_REQUIRED 2L
2356
2357
2358 enum CURL_NETRC_OPTION {
2359
2360
2361 CURL_NETRC_LAST = 3
2362 };
2363
2364 #define CURL_SSLVERSION_DEFAULT 0L
2365 #define CURL_SSLVERSION_TLSv1 1L
2366 #define CURL_SSLVERSION_SSLv2 2L
2367 #define CURL_SSLVERSION_SSLv3 3L
2368 #define CURL_SSLVERSION_TLSv1_0 4L
2369 #define CURL_SSLVERSION_TLSv1_1 5L
2370 #define CURL_SSLVERSION_TLSv1_2 6L
2371 #define CURL_SSLVERSION_TLSv1_3 7L
2372
2373 #define CURL_SSLVERSION_LAST 8L
2374
2375 #define CURL_SSLVERSION_MAX_NONE 0L
2376 #define CURL_SSLVERSION_MAX_DEFAULT (CURL_SSLVERSION_TLSv1 << 16)
2377 #define CURL_SSLVERSION_MAX_TLSv1_0 (CURL_SSLVERSION_TLSv1_0 << 16)
2378 #define CURL_SSLVERSION_MAX_TLSv1_1 (CURL_SSLVERSION_TLSv1_1 << 16)
2379 #define CURL_SSLVERSION_MAX_TLSv1_2 (CURL_SSLVERSION_TLSv1_2 << 16)
2380 #define CURL_SSLVERSION_MAX_TLSv1_3 (CURL_SSLVERSION_TLSv1_3 << 16)
2381
2382
2383 #define CURL_SSLVERSION_MAX_LAST (CURL_SSLVERSION_LAST << 16)
2384
2385 #define CURL_TLSAUTH_NONE 0L
2386 #define CURL_TLSAUTH_SRP 1L
2387
2388 enum CURL_TLSAUTH {
2389
2390
2391 CURL_TLSAUTH_LAST = 2
2392 };
2393
2394
2395
2396
2397
2398
2399 #define CURL_REDIR_GET_ALL 0L
2400 #define CURL_REDIR_POST_301 1L
2401 #define CURL_REDIR_POST_302 2L
2402 #define CURL_REDIR_POST_303 4L
2403 #define CURL_REDIR_POST_ALL \
2404 (CURL_REDIR_POST_301 | CURL_REDIR_POST_302 | CURL_REDIR_POST_303)
2405
2406 #define CURL_TIMECOND_NONE 0L
2407 #define CURL_TIMECOND_IFMODSINCE 1L
2408 #define CURL_TIMECOND_IFUNMODSINCE 2L
2409 #define CURL_TIMECOND_LASTMOD 3L
2410
2411 typedef enum {
2412
2413
2414
2415 CURL_TIMECOND_LAST = 4
2416 } curl_TimeCond;
2417
2418
2419 #define CURL_ZERO_TERMINATED ((size_t)-1)
2420
2421
2422
2423 CURL_EXTERN int curl_strequal(const char *s1, const char *s2);
2424 CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n);
2425
2426
2427 typedef struct curl_mime curl_mime;
2428 typedef struct curl_mimepart curl_mimepart;
2429
2430
2431 #define CURLMIMEOPT_FORMESCAPE (1L << 0)
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441 CURL_EXTERN curl_mime *curl_mime_init(CURL *easy);
2442
2443
2444
2445
2446
2447
2448
2449
2450 CURL_EXTERN void curl_mime_free(curl_mime *mime);
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460 CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime);
2461
2462
2463
2464
2465
2466
2467
2468
2469 CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name);
2470
2471
2472
2473
2474
2475
2476
2477
2478 CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part,
2479 const char *filename);
2480
2481
2482
2483
2484
2485
2486
2487
2488 CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
2489
2490
2491
2492
2493
2494
2495
2496
2497 CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part,
2498 const char *encoding);
2499
2500
2501
2502
2503
2504
2505
2506
2507 CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part,
2508 const char *data, size_t datasize);
2509
2510
2511
2512
2513
2514
2515
2516
2517 CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part,
2518 const char *filename);
2519
2520
2521
2522
2523
2524
2525
2526
2527 CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part,
2528 curl_off_t datasize,
2529 curl_read_callback readfunc,
2530 curl_seek_callback seekfunc,
2531 curl_free_callback freefunc,
2532 void *arg);
2533
2534
2535
2536
2537
2538
2539
2540
2541 CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part,
2542 curl_mime *subparts);
2543
2544
2545
2546
2547
2548
2549
2550 CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part,
2551 struct curl_slist *headers,
2552 int take_ownership);
2553
2554 typedef enum {
2555
2556 CURLFORM_NOTHING CURL_DEPRECATED(7.56.0, ""),
2557 CURLFORM_COPYNAME CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"),
2558 CURLFORM_PTRNAME CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"),
2559 CURLFORM_NAMELENGTH CURL_DEPRECATED(7.56.0, ""),
2560 CURLFORM_COPYCONTENTS CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
2561 CURLFORM_PTRCONTENTS CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
2562 CURLFORM_CONTENTSLENGTH CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
2563 CURLFORM_FILECONTENT CURL_DEPRECATED(7.56.0, "Use curl_mime_data_cb()"),
2564 CURLFORM_ARRAY CURL_DEPRECATED(7.56.0, ""),
2565 CURLFORM_OBSOLETE,
2566 CURLFORM_FILE CURL_DEPRECATED(7.56.0, "Use curl_mime_filedata()"),
2567
2568 CURLFORM_BUFFER CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"),
2569 CURLFORM_BUFFERPTR CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
2570 CURLFORM_BUFFERLENGTH CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
2571
2572 CURLFORM_CONTENTTYPE CURL_DEPRECATED(7.56.0, "Use curl_mime_type()"),
2573 CURLFORM_CONTENTHEADER CURL_DEPRECATED(7.56.0, "Use curl_mime_headers()"),
2574 CURLFORM_FILENAME CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"),
2575 CURLFORM_END,
2576 CURLFORM_OBSOLETE2,
2577
2578 CURLFORM_STREAM CURL_DEPRECATED(7.56.0, "Use curl_mime_data_cb()"),
2579 CURLFORM_CONTENTLEN
2580 CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
2581
2582 CURLFORM_LASTENTRY
2583 } CURLformoption;
2584
2585
2586 struct curl_forms {
2587 CURLformoption option;
2588 const char *value;
2589 };
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607 typedef enum {
2608 CURL_FORMADD_OK CURL_DEPRECATED(7.56.0, ""),
2609
2610 CURL_FORMADD_MEMORY CURL_DEPRECATED(7.56.0, ""),
2611 CURL_FORMADD_OPTION_TWICE CURL_DEPRECATED(7.56.0, ""),
2612 CURL_FORMADD_NULL CURL_DEPRECATED(7.56.0, ""),
2613 CURL_FORMADD_UNKNOWN_OPTION CURL_DEPRECATED(7.56.0, ""),
2614 CURL_FORMADD_INCOMPLETE CURL_DEPRECATED(7.56.0, ""),
2615 CURL_FORMADD_ILLEGAL_ARRAY CURL_DEPRECATED(7.56.0, ""),
2616
2617 CURL_FORMADD_DISABLED CURL_DEPRECATED(7.56.0, ""),
2618
2619 CURL_FORMADD_LAST
2620 } CURLFORMcode;
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631 CURL_EXTERN CURLFORMcode CURL_DEPRECATED(7.56.0, "Use curl_mime_init()")
2632 curl_formadd(struct curl_httppost **httppost,
2633 struct curl_httppost **last_post,
2634 ...);
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644 typedef size_t (*curl_formget_callback)(void *arg, const char *buf,
2645 size_t len);
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657 CURL_EXTERN int CURL_DEPRECATED(7.56.0, "")
2658 curl_formget(struct curl_httppost *form, void *arg,
2659 curl_formget_callback append);
2660
2661
2662
2663
2664
2665
2666
2667 CURL_EXTERN void CURL_DEPRECATED(7.56.0, "Use curl_mime_free()")
2668 curl_formfree(struct curl_httppost *form);
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678 CURL_EXTERN char *curl_getenv(const char *variable);
2679
2680
2681
2682
2683
2684
2685
2686
2687 CURL_EXTERN char *curl_version(void);
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698 CURL_EXTERN char *curl_easy_escape(CURL *curl,
2699 const char *string,
2700 int length);
2701
2702
2703 CURL_EXTERN char *curl_escape(const char *string,
2704 int length);
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717 CURL_EXTERN char *curl_easy_unescape(CURL *curl,
2718 const char *string,
2719 int inlength,
2720 int *outlength);
2721
2722
2723 CURL_EXTERN char *curl_unescape(const char *string,
2724 int length);
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734 CURL_EXTERN void curl_free(void *p);
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747 CURL_EXTERN CURLcode curl_global_init(long flags);
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762 CURL_EXTERN CURLcode curl_global_init_mem(long flags,
2763 curl_malloc_callback m,
2764 curl_free_callback f,
2765 curl_realloc_callback r,
2766 curl_strdup_callback s,
2767 curl_calloc_callback c);
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777 CURL_EXTERN void curl_global_cleanup(void);
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790 CURL_EXTERN CURLcode curl_global_trace(const char *config);
2791
2792
2793 struct curl_slist {
2794 char *data;
2795 struct curl_slist *next;
2796 };
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824 struct curl_ssl_backend {
2825 curl_sslbackend id;
2826 const char *name;
2827 };
2828 typedef struct curl_ssl_backend curl_ssl_backend;
2829
2830 typedef enum {
2831 CURLSSLSET_OK = 0,
2832 CURLSSLSET_UNKNOWN_BACKEND,
2833 CURLSSLSET_TOO_LATE,
2834 CURLSSLSET_NO_BACKENDS
2835 } CURLsslset;
2836
2837 CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
2838 const curl_ssl_backend ***avail);
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848 CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *list,
2849 const char *data);
2850
2851
2852
2853
2854
2855
2856
2857
2858 CURL_EXTERN void curl_slist_free_all(struct curl_slist *list);
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869 CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
2870
2871
2872
2873 struct curl_certinfo {
2874 int num_of_certs;
2875 struct curl_slist **certinfo;
2876
2877
2878
2879 };
2880
2881
2882
2883
2884 struct curl_tlssessioninfo {
2885 curl_sslbackend backend;
2886 void *internals;
2887 };
2888
2889 #define CURLINFO_STRING 0x100000
2890 #define CURLINFO_LONG 0x200000
2891 #define CURLINFO_DOUBLE 0x300000
2892 #define CURLINFO_SLIST 0x400000
2893 #define CURLINFO_PTR 0x400000
2894 #define CURLINFO_SOCKET 0x500000
2895 #define CURLINFO_OFF_T 0x600000
2896 #define CURLINFO_MASK 0x0fffff
2897 #define CURLINFO_TYPEMASK 0xf00000
2898
2899 typedef enum {
2900 CURLINFO_NONE,
2901 CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1,
2902 CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2,
2903 CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3,
2904 CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4,
2905 CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5,
2906 CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,
2907 CURLINFO_SIZE_UPLOAD CURL_DEPRECATED(7.55.0, "Use CURLINFO_SIZE_UPLOAD_T")
2908 = CURLINFO_DOUBLE + 7,
2909 CURLINFO_SIZE_UPLOAD_T = CURLINFO_OFF_T + 7,
2910 CURLINFO_SIZE_DOWNLOAD
2911 CURL_DEPRECATED(7.55.0, "Use CURLINFO_SIZE_DOWNLOAD_T")
2912 = CURLINFO_DOUBLE + 8,
2913 CURLINFO_SIZE_DOWNLOAD_T = CURLINFO_OFF_T + 8,
2914 CURLINFO_SPEED_DOWNLOAD
2915 CURL_DEPRECATED(7.55.0, "Use CURLINFO_SPEED_DOWNLOAD_T")
2916 = CURLINFO_DOUBLE + 9,
2917 CURLINFO_SPEED_DOWNLOAD_T = CURLINFO_OFF_T + 9,
2918 CURLINFO_SPEED_UPLOAD
2919 CURL_DEPRECATED(7.55.0, "Use CURLINFO_SPEED_UPLOAD_T")
2920 = CURLINFO_DOUBLE + 10,
2921 CURLINFO_SPEED_UPLOAD_T = CURLINFO_OFF_T + 10,
2922 CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11,
2923 CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12,
2924 CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13,
2925 CURLINFO_FILETIME = CURLINFO_LONG + 14,
2926 CURLINFO_FILETIME_T = CURLINFO_OFF_T + 14,
2927 CURLINFO_CONTENT_LENGTH_DOWNLOAD
2928 CURL_DEPRECATED(7.55.0,
2929 "Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T")
2930 = CURLINFO_DOUBLE + 15,
2931 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T + 15,
2932 CURLINFO_CONTENT_LENGTH_UPLOAD
2933 CURL_DEPRECATED(7.55.0,
2934 "Use CURLINFO_CONTENT_LENGTH_UPLOAD_T")
2935 = CURLINFO_DOUBLE + 16,
2936 CURLINFO_CONTENT_LENGTH_UPLOAD_T = CURLINFO_OFF_T + 16,
2937 CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
2938 CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
2939 CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19,
2940 CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20,
2941 CURLINFO_PRIVATE = CURLINFO_STRING + 21,
2942 CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22,
2943 CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23,
2944 CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24,
2945 CURLINFO_OS_ERRNO = CURLINFO_LONG + 25,
2946 CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26,
2947 CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27,
2948 CURLINFO_COOKIELIST = CURLINFO_SLIST + 28,
2949 CURLINFO_LASTSOCKET CURL_DEPRECATED(7.45.0, "Use CURLINFO_ACTIVESOCKET")
2950 = CURLINFO_LONG + 29,
2951 CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,
2952 CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31,
2953 CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32,
2954 CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,
2955 CURLINFO_CERTINFO = CURLINFO_PTR + 34,
2956 CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35,
2957 CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36,
2958 CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37,
2959 CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38,
2960 CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39,
2961 CURLINFO_PRIMARY_PORT = CURLINFO_LONG + 40,
2962 CURLINFO_LOCAL_IP = CURLINFO_STRING + 41,
2963 CURLINFO_LOCAL_PORT = CURLINFO_LONG + 42,
2964 CURLINFO_TLS_SESSION CURL_DEPRECATED(7.48.0, "Use CURLINFO_TLS_SSL_PTR")
2965 = CURLINFO_PTR + 43,
2966 CURLINFO_ACTIVESOCKET = CURLINFO_SOCKET + 44,
2967 CURLINFO_TLS_SSL_PTR = CURLINFO_PTR + 45,
2968 CURLINFO_HTTP_VERSION = CURLINFO_LONG + 46,
2969 CURLINFO_PROXY_SSL_VERIFYRESULT = CURLINFO_LONG + 47,
2970 CURLINFO_PROTOCOL CURL_DEPRECATED(7.85.0, "Use CURLINFO_SCHEME")
2971 = CURLINFO_LONG + 48,
2972 CURLINFO_SCHEME = CURLINFO_STRING + 49,
2973 CURLINFO_TOTAL_TIME_T = CURLINFO_OFF_T + 50,
2974 CURLINFO_NAMELOOKUP_TIME_T = CURLINFO_OFF_T + 51,
2975 CURLINFO_CONNECT_TIME_T = CURLINFO_OFF_T + 52,
2976 CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53,
2977 CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,
2978 CURLINFO_REDIRECT_TIME_T = CURLINFO_OFF_T + 55,
2979 CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,
2980 CURLINFO_RETRY_AFTER = CURLINFO_OFF_T + 57,
2981 CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58,
2982 CURLINFO_PROXY_ERROR = CURLINFO_LONG + 59,
2983 CURLINFO_REFERER = CURLINFO_STRING + 60,
2984 CURLINFO_CAINFO = CURLINFO_STRING + 61,
2985 CURLINFO_CAPATH = CURLINFO_STRING + 62,
2986 CURLINFO_XFER_ID = CURLINFO_OFF_T + 63,
2987 CURLINFO_CONN_ID = CURLINFO_OFF_T + 64,
2988 CURLINFO_QUEUE_TIME_T = CURLINFO_OFF_T + 65,
2989 CURLINFO_USED_PROXY = CURLINFO_LONG + 66,
2990 CURLINFO_POSTTRANSFER_TIME_T = CURLINFO_OFF_T + 67,
2991 CURLINFO_EARLYDATA_SENT_T = CURLINFO_OFF_T + 68,
2992 CURLINFO_HTTPAUTH_USED = CURLINFO_LONG + 69,
2993 CURLINFO_PROXYAUTH_USED = CURLINFO_LONG + 70,
2994 CURLINFO_SIZE_DELIVERED = CURLINFO_OFF_T + 71,
2995 CURLINFO_LASTONE = 71
2996 } CURLINFO;
2997
2998
2999
3000 #define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE
3001
3002 typedef enum {
3003 CURLCLOSEPOLICY_NONE,
3004
3005 CURLCLOSEPOLICY_OLDEST,
3006 CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
3007 CURLCLOSEPOLICY_LEAST_TRAFFIC,
3008 CURLCLOSEPOLICY_SLOWEST,
3009 CURLCLOSEPOLICY_CALLBACK,
3010
3011 CURLCLOSEPOLICY_LAST
3012 } curl_closepolicy;
3013
3014 #define CURL_GLOBAL_SSL (1 << 0)
3015 #define CURL_GLOBAL_WIN32 (1 << 1)
3016 #define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL | CURL_GLOBAL_WIN32)
3017 #define CURL_GLOBAL_NOTHING 0
3018 #define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
3019 #define CURL_GLOBAL_ACK_EINTR (1 << 2)
3020
3021
3022
3023
3024
3025
3026 typedef enum {
3027 CURL_LOCK_DATA_NONE = 0,
3028
3029
3030
3031 CURL_LOCK_DATA_SHARE,
3032 CURL_LOCK_DATA_COOKIE,
3033 CURL_LOCK_DATA_DNS,
3034 CURL_LOCK_DATA_SSL_SESSION,
3035 CURL_LOCK_DATA_CONNECT,
3036 CURL_LOCK_DATA_PSL,
3037 CURL_LOCK_DATA_HSTS,
3038 CURL_LOCK_DATA_LAST
3039 } curl_lock_data;
3040
3041
3042 typedef enum {
3043 CURL_LOCK_ACCESS_NONE = 0,
3044 CURL_LOCK_ACCESS_SHARED = 1,
3045 CURL_LOCK_ACCESS_SINGLE = 2,
3046 CURL_LOCK_ACCESS_LAST
3047 } curl_lock_access;
3048
3049 typedef void (*curl_lock_function)(CURL *handle,
3050 curl_lock_data data,
3051 curl_lock_access locktype,
3052 void *userptr);
3053 typedef void (*curl_unlock_function)(CURL *handle,
3054 curl_lock_data data,
3055 void *userptr);
3056
3057 typedef enum {
3058 CURLSHE_OK,
3059 CURLSHE_BAD_OPTION,
3060 CURLSHE_IN_USE,
3061 CURLSHE_INVALID,
3062 CURLSHE_NOMEM,
3063 CURLSHE_NOT_BUILT_IN,
3064 CURLSHE_LAST
3065 } CURLSHcode;
3066
3067 typedef enum {
3068 CURLSHOPT_NONE,
3069 CURLSHOPT_SHARE,
3070 CURLSHOPT_UNSHARE,
3071 CURLSHOPT_LOCKFUNC,
3072 CURLSHOPT_UNLOCKFUNC,
3073 CURLSHOPT_USERDATA,
3074
3075 CURLSHOPT_LAST
3076 } CURLSHoption;
3077
3078 CURL_EXTERN CURLSH *curl_share_init(void);
3079 CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *sh, CURLSHoption option, ...);
3080 CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *sh);
3081
3082
3083
3084
3085
3086 typedef enum {
3087 CURLVERSION_FIRST,
3088 CURLVERSION_SECOND,
3089 CURLVERSION_THIRD,
3090 CURLVERSION_FOURTH,
3091 CURLVERSION_FIFTH,
3092 CURLVERSION_SIXTH,
3093 CURLVERSION_SEVENTH,
3094 CURLVERSION_EIGHTH,
3095 CURLVERSION_NINTH,
3096 CURLVERSION_TENTH,
3097 CURLVERSION_ELEVENTH,
3098 CURLVERSION_TWELFTH,
3099 CURLVERSION_LAST
3100 } CURLversion;
3101
3102
3103
3104
3105
3106 #define CURLVERSION_NOW CURLVERSION_TWELFTH
3107
3108 struct curl_version_info_data {
3109 CURLversion age;
3110 const char *version;
3111 unsigned int version_num;
3112 const char *host;
3113 int features;
3114 const char *ssl_version;
3115 long ssl_version_num;
3116 const char *libz_version;
3117
3118 const char * const *protocols;
3119
3120
3121 const char *ares;
3122 int ares_num;
3123
3124
3125 const char *libidn;
3126
3127
3128
3129
3130 int iconv_ver_num;
3131
3132 const char *libssh_version;
3133
3134
3135 unsigned int brotli_ver_num;
3136
3137 const char *brotli_version;
3138
3139
3140 unsigned int nghttp2_ver_num;
3141
3142 const char *nghttp2_version;
3143 const char *quic_version;
3144
3145
3146
3147 const char *cainfo;
3148
3149 const char *capath;
3150
3151
3152
3153 unsigned int zstd_ver_num;
3154
3155 const char *zstd_version;
3156
3157
3158 const char *hyper_version;
3159
3160
3161 const char *gsasl_version;
3162
3163
3164
3165 const char * const *feature_names;
3166
3167
3168 const char *rtmp_version;
3169 };
3170 typedef struct curl_version_info_data curl_version_info_data;
3171
3172 #define CURL_VERSION_IPV6 (1<<0)
3173 #define CURL_VERSION_KERBEROS4 (1<<1)
3174
3175 #define CURL_VERSION_SSL (1<<2)
3176 #define CURL_VERSION_LIBZ (1<<3)
3177 #define CURL_VERSION_NTLM (1<<4)
3178 #define CURL_VERSION_GSSNEGOTIATE (1<<5)
3179
3180 #define CURL_VERSION_DEBUG (1<<6)
3181 #define CURL_VERSION_ASYNCHDNS (1<<7)
3182 #define CURL_VERSION_SPNEGO (1<<8)
3183 #define CURL_VERSION_LARGEFILE (1<<9)
3184 #define CURL_VERSION_IDN (1<<10)
3185
3186 #define CURL_VERSION_SSPI (1<<11)
3187 #define CURL_VERSION_CONV (1<<12)
3188 #define CURL_VERSION_CURLDEBUG (1<<13)
3189
3190 #define CURL_VERSION_TLSAUTH_SRP (1<<14)
3191 #define CURL_VERSION_NTLM_WB (1<<15)
3192
3193 #define CURL_VERSION_HTTP2 (1<<16)
3194 #define CURL_VERSION_GSSAPI (1<<17)
3195 #define CURL_VERSION_KERBEROS5 (1<<18)
3196 #define CURL_VERSION_UNIX_SOCKETS (1<<19)
3197 #define CURL_VERSION_PSL (1<<20)
3198
3199 #define CURL_VERSION_HTTPS_PROXY (1<<21)
3200 #define CURL_VERSION_MULTI_SSL (1<<22)
3201 #define CURL_VERSION_BROTLI (1<<23)
3202 #define CURL_VERSION_ALTSVC (1<<24)
3203 #define CURL_VERSION_HTTP3 (1<<25)
3204 #define CURL_VERSION_ZSTD (1<<26)
3205 #define CURL_VERSION_UNICODE (1<<27)
3206 #define CURL_VERSION_HSTS (1<<28)
3207 #define CURL_VERSION_GSASL (1<<29)
3208 #define CURL_VERSION_THREADSAFE (1<<30)
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218 CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion stamp);
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229 CURL_EXTERN const char *curl_easy_strerror(CURLcode error);
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240 CURL_EXTERN const char *curl_share_strerror(CURLSHcode error);
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251 CURL_EXTERN CURLcode curl_easy_pause(CURL *curl, int action);
3252
3253 #define CURLPAUSE_RECV (1 << 0)
3254 #define CURLPAUSE_RECV_CONT 0
3255
3256 #define CURLPAUSE_SEND (1 << 2)
3257 #define CURLPAUSE_SEND_CONT 0
3258
3259 #define CURLPAUSE_ALL (CURLPAUSE_RECV | CURLPAUSE_SEND)
3260 #define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT | CURLPAUSE_SEND_CONT)
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270 CURL_EXTERN CURLcode curl_easy_ssls_import(CURL *curl,
3271 const char *session_key,
3272 const unsigned char *shmac,
3273 size_t shmac_len,
3274 const unsigned char *sdata,
3275 size_t sdata_len);
3276
3277
3278
3279 typedef CURLcode curl_ssls_export_cb(CURL *curl,
3280 void *userptr,
3281 const char *session_key,
3282 const unsigned char *shmac,
3283 size_t shmac_len,
3284 const unsigned char *sdata,
3285 size_t sdata_len,
3286 curl_off_t valid_until,
3287 int ietf_tls_id,
3288 const char *alpn,
3289 size_t earlydata_max);
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301 CURL_EXTERN CURLcode curl_easy_ssls_export(CURL *curl,
3302 curl_ssls_export_cb *export_fn,
3303 void *userptr);
3304
3305 #ifdef __cplusplus
3306 }
3307 #endif
3308
3309
3310
3311 #include "easy.h" /* nothing in curl is fun without the easy stuff */
3312 #include "multi.h"
3313 #include "urlapi.h"
3314 #include "options.h"
3315 #include "header.h"
3316 #include "websockets.h"
3317 #include "mprintf.h"
3318
3319
3320 #if ((defined(__GNUC__) && defined(__GNUC_MINOR__) && \
3321 ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || \
3322 (defined(__clang__) && __clang_major__ >= 14)) && \
3323 !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)
3324 #include "typecheck-gcc.h"
3325 #else
3326 #if defined(__STDC__) && (__STDC__ >= 1)
3327
3328
3329
3330
3331 #define curl_exactly_three_arguments(a, b, c) (a, b, c)
3332 #define curl_easy_setopt(handle, opt, param) \
3333 curl_easy_setopt curl_exactly_three_arguments(handle, opt, param)
3334 #define curl_easy_getinfo(handle, info, arg) \
3335 curl_easy_getinfo curl_exactly_three_arguments(handle, info, arg)
3336 #define curl_share_setopt(share, opt, param) \
3337 curl_share_setopt curl_exactly_three_arguments(share, opt, param)
3338 #define curl_multi_setopt(handle, opt, param) \
3339 curl_multi_setopt curl_exactly_three_arguments(handle, opt, param)
3340 #endif
3341 #endif
3342
3343 #endif