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