package vendor:curl

⌘K
Ctrl+K
or
/

    Index

    Types (117)
    Constants (309)
    Variables (0)

    This section is empty.

    Procedures (85)
    Procedure Groups (0)

    This section is empty.

    Types

    CURLSH ¶

    CURLSH :: struct {}
    Related Procedures With Parameters
    Related Procedures With Returns

    CURLU ¶

    CURLU :: struct {}
    Related Procedures With Parameters
    Related Procedures With Returns

    Hcode ¶

    Hcode :: enum i32 {
    	E_OK, 
    	E_BADINDEX,      // header exists but not with this index
    	E_MISSING,       // no such header exists
    	E_NOHEADERS,     // no headers at all exist (yet)
    	E_NOREQUEST,     // no request with this number was used
    	E_OUT_OF_MEMORY, // out of memory while processing
    	E_BAD_ARGUMENT,  // a function argument was not okay
    	E_NOT_BUILT_IN,  // if API was disabled in the build
    }
    Related Procedures With Returns

    INFO ¶

    INFO :: enum i32 {
    	NONE,                                // first, never use this
    	EFFECTIVE_URL             = 1048577, 
    	RESPONSE_CODE             = 2097154, 
    	TOTAL_TIME                = 3145731, 
    	NAMELOOKUP_TIME           = 3145732, 
    	CONNECT_TIME              = 3145733, 
    	PRETRANSFER_TIME          = 3145734, 
    	SIZE_UPLOAD_T             = 6291463, 
    	SIZE_DOWNLOAD_T           = 6291464, 
    	SPEED_DOWNLOAD_T          = 6291465, 
    	SPEED_UPLOAD_T            = 6291466, 
    	HEADER_SIZE               = 2097163, 
    	REQUEST_SIZE              = 2097164, 
    	SSL_VERIFYRESULT          = 2097165, 
    	FILETIME                  = 2097166, 
    	FILETIME_T                = 6291470, 
    	CONTENT_LENGTH_DOWNLOAD_T = 6291471, 
    	CONTENT_LENGTH_UPLOAD_T   = 6291472, 
    	STARTTRANSFER_TIME        = 3145745, 
    	CONTENT_TYPE              = 1048594, 
    	REDIRECT_TIME             = 3145747, 
    	REDIRECT_COUNT            = 2097172, 
    	PRIVATE                   = 1048597, 
    	HTTP_CONNECTCODE          = 2097174, 
    	HTTPAUTH_AVAIL            = 2097175, 
    	PROXYAUTH_AVAIL           = 2097176, 
    	OS_ERRNO                  = 2097177, 
    	NUM_CONNECTS              = 2097178, 
    	SSL_ENGINES               = 4194331, 
    	COOKIELIST                = 4194332, 
    	FTP_ENTRY_PATH            = 1048606, 
    	REDIRECT_URL              = 1048607, 
    	PRIMARY_IP                = 1048608, 
    	APPCONNECT_TIME           = 3145761, 
    	CERTINFO                  = 4194338, 
    	CONDITION_UNMET           = 2097187, 
    	RTSP_SESSION_ID           = 1048612, 
    	RTSP_CLIENT_CSEQ          = 2097189, 
    	RTSP_SERVER_CSEQ          = 2097190, 
    	RTSP_CSEQ_RECV            = 2097191, 
    	PRIMARY_PORT              = 2097192, 
    	LOCAL_IP                  = 1048617, 
    	LOCAL_PORT                = 2097194, 
    	ACTIVESOCKET              = 5242924, 
    	TLS_SSL_PTR               = 4194349, 
    	HTTP_VERSION              = 2097198, 
    	PROXY_SSL_VERIFYRESULT    = 2097199, 
    	SCHEME                    = 1048625, 
    	TOTAL_TIME_T              = 6291506, 
    	NAMELOOKUP_TIME_T         = 6291507, 
    	CONNECT_TIME_T            = 6291508, 
    	PRETRANSFER_TIME_T        = 6291509, 
    	STARTTRANSFER_TIME_T      = 6291510, 
    	REDIRECT_TIME_T           = 6291511, 
    	APPCONNECT_TIME_T         = 6291512, 
    	RETRY_AFTER               = 6291513, 
    	EFFECTIVE_METHOD          = 1048634, 
    	PROXY_ERROR               = 2097211, 
    	REFERER                   = 1048636, 
    	CAINFO                    = 1048637, 
    	CAPATH                    = 1048638, 
    	XFER_ID                   = 6291519, 
    	CONN_ID                   = 6291520, 
    	QUEUE_TIME_T              = 6291521, 
    	USED_PROXY                = 2097218, 
    	POSTTRANSFER_TIME_T       = 6291523, 
    	EARLYDATA_SENT_T          = 6291524, 
    	HTTPAUTH_USED             = 2097221, 
    	PROXYAUTH_USED            = 2097222, 
    	// CURLINFO_RESPONSE_CODE is the new name for the option previously known as
    	// 	   CURLINFO_HTTP_CODE 
    	HTTP_CODE                 = 2097154, 
    }
    Related Procedures With Parameters

    MSG ¶

    MSG :: enum i32 {
    	NONE, // first, not used
    	DONE, // This easy handle has completed. 'result' contains
    	          the CURLcode of the transfer
    }

    MULTI_NOTIFY ¶

    MULTI_NOTIFY :: enum u32 {
    	INFO_READ = 0, 
    	EASY_DONE = 1, 
    }
     

    * Notifications dispatched by a multi handle, when enabled.

    Related Procedures With Parameters

    Mcode ¶

    Mcode :: enum i32 {
    	CALL_MULTI_PERFORM    = -1, // please call curl_multi_perform() or
                                        curl_multi_socket*() soon
    	OK, 
    	BAD_HANDLE,                 // the passed-in handle is not a valid CURLM handle
    	BAD_EASY_HANDLE,            // an easy handle was not good/valid
    	OUT_OF_MEMORY,              // if you ever get this, you are in deep sh*t
    	INTERNAL_ERROR,             // this is a libcurl bug
    	BAD_SOCKET,                 // the passed in socket argument did not match
    	UNKNOWN_OPTION,             // curl_multi_setopt() with unsupported option
    	ADDED_ALREADY,              // an easy handle already added to a multi handle was
                                attempted to get added - again
    	RECURSIVE_API_CALL,         // an api function was called from inside a
                                   callback
    	WAKEUP_FAILURE,             // wakeup is unavailable or failed
    	BAD_FUNCTION_ARGUMENT,      // function called with a bad parameter
    	ABORTED_BY_CALLBACK, 
    	UNRECOVERABLE_POLL, 
    	CALL_MULTI_SOCKET     = -1, 
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    Minfo ¶

    Minfo :: enum i32 {
    	// first, never use this 
    	NONE               = 0, 
    	// The number of easy handles currently managed by the multi handle,
    	// 	 * e.g. have been added but not yet removed. 
    	XFERS_CURRENT      = 1, 
    	// The number of easy handles running, e.g. not done and not queueing. 
    	XFERS_RUNNING      = 2, 
    	// The number of easy handles waiting to start, e.g. for a connection
    	// 	 * to become available due to limits on parallelism, max connections
    	// 	 * or other factors. 
    	INFO_XFERS_PENDING = 3, 
    	// The number of easy handles finished, waiting for their results to
    	// 	 * be read via `curl_multi_info_read()`. 
    	XFERS_DONE         = 4, 
    	// The total number of easy handles added to the multi handle, ever. 
    	XFERS_ADDED        = 5, 
    	// the last unused 
    	LASTENTRY, 
    }
    Related Procedures With Parameters

    Moption ¶

    Moption :: enum i32 {
    	// This is the socket callback function pointer 
    	SOCKETFUNCTION              = 20001, 
    	// This is the argument passed to the socket callback 
    	SOCKETDATA                  = 10002, 
    	// set to 1 to enable pipelining for this multi handle 
    	PIPELINING                  = 3, 
    	// This is the timer callback function pointer 
    	TIMERFUNCTION               = 20004, 
    	// This is the argument passed to the timer callback 
    	TIMERDATA                   = 10005, 
    	// maximum number of entries in the connection cache 
    	MAXCONNECTS                 = 6, 
    	// maximum number of (pipelining) connections to one host 
    	MAX_HOST_CONNECTIONS        = 7, 
    	// maximum number of requests in a pipeline 
    	MAX_PIPELINE_LENGTH         = 8, 
    	// a connection with a content-length longer than this
    	// 	will not be considered for pipelining 
    	CONTENT_LENGTH_PENALTY_SIZE = 30009, 
    	// a connection with a chunk length longer than this
    	// 	will not be considered for pipelining 
    	CHUNK_LENGTH_PENALTY_SIZE   = 30010, 
    	// a list of site names(+port) that are blocked from pipelining 
    	PIPELINING_SITE_BL          = 10011, 
    	// a list of server types that are blocked from pipelining 
    	PIPELINING_SERVER_BL        = 10012, 
    	// maximum number of open connections in total 
    	MAX_TOTAL_CONNECTIONS       = 13, 
    	// This is the server push callback function pointer 
    	PUSHFUNCTION                = 20014, 
    	// This is the argument passed to the server push callback 
    	PUSHDATA                    = 10015, 
    	// maximum number of concurrent streams to support on a connection 
    	MAX_CONCURRENT_STREAMS      = 16, 
    	// network has changed, adjust caches/connection reuse 
    	NETWORK_CHANGED             = 17, 
    	// This is the notify callback function pointer 
    	NOTIFYFUNCTION              = 20018, 
    	// This is the argument passed to the notify callback 
    	NOTIFYDATA                  = 10019, 
    }
    Related Procedures With Parameters

    Msg ¶

    Msg :: struct {
    	msg:         MSG,
    	// what this message means 
    	easy_handle: ^CURL,
    	// the handle it concerns 
    	data:        struct #raw_union {
    		whatever: rawptr,
    		// message-specific data 
    		result:   code,
    	},
    }
    Related Procedures With Returns

    NETRC_OPTION ¶

    NETRC_OPTION :: enum i32 {
    	// we set a single member here, just to make sure we still provide the enum,
    	// 	   but the values to use are defined above with L suffixes 
    	LAST = 3, 
    }

    SHcode ¶

    SHcode :: enum i32 {
    	OK,           // all is fine
    	BAD_OPTION,   // 1
    	IN_USE,       // 2
    	INVALID,      // 3
    	NOMEM,        // 4 out of memory
    	NOT_BUILT_IN, // 5 feature not present in lib
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    SHoption ¶

    SHoption :: enum i32 {
    	NONE,                 // do not use
    	CURLSHOPT_SHARE,      // specify a data type to share
    	CURLSHOPT_UNSHARE,    // specify which data type to stop sharing
    	CURLSHOPT_LOCKFUNC,   // pass in a 'curl_lock_function' pointer
    	CURLSHOPT_UNLOCKFUNC, // pass in a 'curl_unlock_function' pointer
    	CURLSHOPT_USERDATA,   // pass in a user data pointer used in the lock/unlock
    	                         callback functions
    }
    Related Procedures With Parameters

    STScode ¶

    STScode :: enum i32 {
    	OK, 
    	DONE, 
    	FAIL, 
    }

    TLSAUTH ¶

    TLSAUTH :: enum i32 {
    	// 		we set a single member here, just to make sure we still provide the enum,
    	// 		but the values to use are defined above with L suffixes
    	LAST = 2, 
    }

    TimeCond ¶

    TimeCond :: enum i32 {
    	// 		we set a single member here, just to make sure we still provide
    	// 		the enum typedef, but the values to use are defined above with L
    	// 		suffixes
    	LAST = 4, 
    }

    UFlag ¶

    UFlag :: enum u32 {
    	DEFAULT_PORT       = 0,  // return default port number
    	NO_DEFAULT_PORT    = 1,  // act as if no port number was set,
    	                             if the port number matches the
    	                             default for the scheme
    	DEFAULT_SCHEME     = 2,  // return default scheme if
    	                             missing
    	NON_SUPPORT_SCHEME = 3,  // allow non-supported scheme
    	PATH_AS_IS         = 4,  // leave dot sequences
    	DISALLOW_USER      = 5,  // no user+password allowed
    	URLDECODE          = 6,  // URL decode on get
    	URLENCODE          = 7,  // URL encode on set
    	APPENDQUERY        = 8,  // append a form style part
    	GUESS_SCHEME       = 9,  // legacy curl-style guessing
    	NO_AUTHORITY       = 10, // Allow empty authority when the
    	                             scheme is unknown.
    	ALLOW_SPACE        = 11, // Allow spaces in the URL
    	PUNYCODE           = 12, // get the hostname in punycode
    	PUNY2IDN           = 13, // punycode => IDN conversion
    	GET_EMPTY          = 14, // allow empty queries and fragments
    	                             when extracting the URL or the
    	                             components
    	NO_GUESS_SCHEME    = 15, // for get, do not accept a guess
    }

    UPart ¶

    UPart :: enum i32 {
    	URL, 
    	SCHEME, 
    	USER, 
    	PASSWORD, 
    	OPTIONS, 
    	HOST, 
    	PORT, 
    	PATH, 
    	QUERY, 
    	FRAGMENT, 
    	ZONEID,   // added in 7.65.0
    }
    Related Procedures With Parameters

    Ucode ¶

    Ucode :: enum i32 {
    	E_OK, 
    	E_BAD_HANDLE,         // 1
    	E_BAD_PARTPOINTER,    // 2
    	E_MALFORMED_INPUT,    // 3
    	E_BAD_PORT_NUMBER,    // 4
    	E_UNSUPPORTED_SCHEME, // 5
    	E_URLDECODE,          // 6
    	E_OUT_OF_MEMORY,      // 7
    	E_USER_NOT_ALLOWED,   // 8
    	E_UNKNOWN_PART,       // 9
    	E_NO_SCHEME,          // 10
    	E_NO_USER,            // 11
    	E_NO_PASSWORD,        // 12
    	E_NO_OPTIONS,         // 13
    	E_NO_HOST,            // 14
    	E_NO_PORT,            // 15
    	E_NO_QUERY,           // 16
    	E_NO_FRAGMENT,        // 17
    	E_NO_ZONEID,          // 18
    	E_BAD_FILE_URL,       // 19
    	E_BAD_FRAGMENT,       // 20
    	E_BAD_HOSTNAME,       // 21
    	E_BAD_IPV6,           // 22
    	E_BAD_LOGIN,          // 23
    	E_BAD_PASSWORD,       // 24
    	E_BAD_PATH,           // 25
    	E_BAD_QUERY,          // 26
    	E_BAD_SCHEME,         // 27
    	E_BAD_SLASHES,        // 28
    	E_BAD_USER,           // 29
    	E_LACKS_IDN,          // 30
    	E_TOO_LARGE,          // 31
    }
     

    the error codes for the URL API

    Related Procedures With Parameters
    Related Procedures With Returns

    blob ¶

    blob :: struct {
    	data:  rawptr,
    	len:   uint,
    	flags: blob_flags,
    }

    blob_flag ¶

    blob_flag :: enum u32 {
    	COPY = 0, 
    }

    blob_flags ¶

    blob_flags :: distinct bit_set[blob_flag; u32]
    Related Constants

    calloc_callback ¶

    calloc_callback :: proc "c" (nmemb, size: uint) -> rawptr
    Related Procedures With Parameters

    certinfo ¶

    certinfo :: struct {
    	num_of_certs: i32,
    	// number of certificates with information 
    	certinfo:     ^^slist,
    }
     

    info about the certificate chain, for SSL backends that support it. Asked for with CURLOPT_CERTINFO / CURLINFO_CERTINFO

    chunk_bgn_callback ¶

    chunk_bgn_callback :: proc "c" (transfer_info: rawptr, ptr: rawptr, remains: i32) -> i32
     

    if splitting of data transfer is enabled, this callback is called before download of an individual chunk started. Note that parameter "remains" works only for FTP wildcard downloading (for now), otherwise is not used

    chunk_end_callback ¶

    chunk_end_callback :: proc "c" (ptr: rawptr) -> i32
     

    If splitting of data transfer is enabled this callback is called after download of an individual chunk finished. Note! After this callback was set then it have to be called FOR ALL chunks. Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC. This is the reason why we do not need "transfer_info" parameter in this callback and we are not interested in "remains" parameter too.

    closepolicy ¶

    closepolicy :: enum i32 {
    	NONE,                                // first, never use this
    	CURLCLOSEPOLICY_OLDEST, 
    	CURLCLOSEPOLICY_LEAST_RECENTLY_USED, 
    	CURLCLOSEPOLICY_LEAST_TRAFFIC, 
    	CURLCLOSEPOLICY_SLOWEST, 
    	CURLCLOSEPOLICY_CALLBACK, 
    }

    closesocket_callback ¶

    closesocket_callback :: proc "c" (clientp: rawptr, item: socket_t) -> i32

    code ¶

    code :: enum i32 {
    	E_OK                       = 0, 
    	E_UNSUPPORTED_PROTOCOL,         // 1
    	E_FAILED_INIT,                  // 2
    	E_URL_MALFORMAT,                // 3
    	E_NOT_BUILT_IN,                 // 4 - [was obsoleted in August 2007 for
                                        7.17.0, reused in April 2011 for 7.21.5]
    	E_COULDNT_RESOLVE_PROXY,        // 5
    	E_COULDNT_RESOLVE_HOST,         // 6
    	E_COULDNT_CONNECT,              // 7
    	E_WEIRD_SERVER_REPLY,           // 8
    	E_REMOTE_ACCESS_DENIED,         // 9 a service was denied by the server
                                        due to lack of access - when login fails
                                        this is not returned.
    	E_FTP_ACCEPT_FAILED,            // 10 - [was obsoleted in April 2006 for
                                        7.15.4, reused in Dec 2011 for 7.24.0]
    	E_FTP_WEIRD_PASS_REPLY,         // 11
    	E_FTP_ACCEPT_TIMEOUT,           // 12 - timeout occurred accepting server
                                        [was obsoleted in August 2007 for 7.17.0,
                                        reused in Dec 2011 for 7.24.0]
    	E_FTP_WEIRD_PASV_REPLY,         // 13
    	E_FTP_WEIRD_227_FORMAT,         // 14
    	E_FTP_CANT_GET_HOST,            // 15
    	E_HTTP2,                        // 16 - A problem in the http2 framing layer.
                                        [was obsoleted in August 2007 for 7.17.0,
                                        reused in July 2014 for 7.38.0]
    	E_FTP_COULDNT_SET_TYPE,         // 17
    	E_PARTIAL_FILE,                 // 18
    	E_FTP_COULDNT_RETR_FILE,        // 19
    	E_OBSOLETE20,                   // 20 - NOT USED
    	E_QUOTE_ERROR,                  // 21 - quote command failure
    	E_HTTP_RETURNED_ERROR,          // 22
    	E_WRITE_ERROR,                  // 23
    	E_OBSOLETE24,                   // 24 - NOT USED
    	E_UPLOAD_FAILED,                // 25 - failed upload "command"
    	E_READ_ERROR,                   // 26 - could not open/read from file
    	E_OUT_OF_MEMORY,                // 27
    	E_OPERATION_TIMEDOUT,           // 28 - the timeout time was reached
    	E_OBSOLETE29,                   // 29 - NOT USED
    	E_FTP_PORT_FAILED,              // 30 - FTP PORT operation failed
    	E_FTP_COULDNT_USE_REST,         // 31 - the REST command failed
    	E_OBSOLETE32,                   // 32 - NOT USED
    	E_RANGE_ERROR,                  // 33 - RANGE "command" did not work
    	E_OBSOLETE34,                   // 34
    	E_SSL_CONNECT_ERROR,            // 35 - wrong when connecting with SSL
    	E_BAD_DOWNLOAD_RESUME,          // 36 - could not resume download
    	E_FILE_COULDNT_READ_FILE,       // 37
    	E_LDAP_CANNOT_BIND,             // 38
    	E_LDAP_SEARCH_FAILED,           // 39
    	E_OBSOLETE40,                   // 40 - NOT USED
    	E_OBSOLETE41,                   // 41 - NOT USED starting with 7.53.0
    	E_ABORTED_BY_CALLBACK,          // 42
    	E_BAD_FUNCTION_ARGUMENT,        // 43
    	E_OBSOLETE44,                   // 44 - NOT USED
    	E_INTERFACE_FAILED,             // 45 - CURLOPT_INTERFACE failed
    	E_OBSOLETE46,                   // 46 - NOT USED
    	E_TOO_MANY_REDIRECTS,           // 47 - catch endless re-direct loops
    	E_UNKNOWN_OPTION,               // 48 - User specified an unknown option
    	E_SETOPT_OPTION_SYNTAX,         // 49 - Malformed setopt option
    	E_OBSOLETE50,                   // 50 - NOT USED
    	E_OBSOLETE51,                   // 51 - NOT USED
    	E_GOT_NOTHING,                  // 52 - when this is a specific error
    	E_SSL_ENGINE_NOTFOUND,          // 53 - SSL crypto engine not found
    	E_SSL_ENGINE_SETFAILED,         // 54 - can not set SSL crypto engine as
                                        default
    	E_SEND_ERROR,                   // 55 - failed sending network data
    	E_RECV_ERROR,                   // 56 - failure in receiving network data
    	E_OBSOLETE57,                   // 57 - NOT IN USE
    	E_SSL_CERTPROBLEM,              // 58 - problem with the local certificate
    	E_SSL_CIPHER,                   // 59 - could not use specified cipher
    	E_PEER_FAILED_VERIFICATION,     // 60 - peer's certificate or fingerprint
                                         was not verified fine
    	E_BAD_CONTENT_ENCODING,         // 61 - Unrecognized/bad encoding
    	E_OBSOLETE62,                   // 62 - NOT IN USE since 7.82.0
    	E_FILESIZE_EXCEEDED,            // 63 - Maximum file size exceeded
    	E_USE_SSL_FAILED,               // 64 - Requested FTP SSL level failed
    	E_SEND_FAIL_REWIND,             // 65 - Sending the data requires a rewind
                                        that failed
    	E_SSL_ENGINE_INITFAILED,        // 66 - failed to initialise ENGINE
    	E_LOGIN_DENIED,                 // 67 - user, password or similar was not
                                        accepted and we failed to login
    	E_TFTP_NOTFOUND,                // 68 - file not found on server
    	E_TFTP_PERM,                    // 69 - permission problem on server
    	E_REMOTE_DISK_FULL,             // 70 - out of disk space on server
    	E_TFTP_ILLEGAL,                 // 71 - Illegal TFTP operation
    	E_TFTP_UNKNOWNID,               // 72 - Unknown transfer ID
    	E_REMOTE_FILE_EXISTS,           // 73 - File already exists
    	E_TFTP_NOSUCHUSER,              // 74 - No such user
    	E_OBSOLETE75,                   // 75 - NOT IN USE since 7.82.0
    	E_OBSOLETE76,                   // 76 - NOT IN USE since 7.82.0
    	E_SSL_CACERT_BADFILE,           // 77 - could not load CACERT file, missing
                                        or wrong format
    	E_REMOTE_FILE_NOT_FOUND,        // 78 - remote file not found
    	E_SSH,                          // 79 - error from the SSH layer, somewhat
                                        generic so the error message will be of
                                        interest when this has happened
    	E_SSL_SHUTDOWN_FAILED,          // 80 - Failed to shut down the SSL
                                        connection
    	E_AGAIN,                        // 81 - socket is not ready for send/recv,
                                        wait till it is ready and try again (Added
                                        in 7.18.2)
    	E_SSL_CRL_BADFILE,              // 82 - could not load CRL file, missing or
                                        wrong format (Added in 7.19.0)
    	E_SSL_ISSUER_ERROR,             // 83 - Issuer check failed.  (Added in
                                        7.19.0)
    	E_FTP_PRET_FAILED,              // 84 - a PRET command failed
    	E_RTSP_CSEQ_ERROR,              // 85 - mismatch of RTSP CSeq numbers
    	E_RTSP_SESSION_ERROR,           // 86 - mismatch of RTSP Session Ids
    	E_FTP_BAD_FILE_LIST,            // 87 - unable to parse FTP file list
    	E_CHUNK_FAILED,                 // 88 - chunk callback reported error
    	E_NO_CONNECTION_AVAILABLE,      // 89 - No connection available, the
                                        session will be queued
    	E_SSL_PINNEDPUBKEYNOTMATCH,     // 90 - specified pinned public key did not
                                         match
    	E_SSL_INVALIDCERTSTATUS,        // 91 - invalid certificate status
    	E_HTTP2_STREAM,                 // 92 - stream error in HTTP/2 framing layer
    	E_RECURSIVE_API_CALL,           // 93 - an api function was called from
                                        inside a callback
    	E_AUTH_ERROR,                   // 94 - an authentication function returned an
                                        error
    	E_HTTP3,                        // 95 - An HTTP/3 layer problem
    	E_QUIC_CONNECT_ERROR,           // 96 - QUIC connection error
    	E_PROXY,                        // 97 - proxy handshake error
    	E_SSL_CLIENTCERT,               // 98 - client-side certificate required
    	E_UNRECOVERABLE_POLL,           // 99 - poll/select returned fatal error
    	E_TOO_LARGE,                    // 100 - a value/data met its maximum
    	E_ECH_REQUIRED,                 // 101 - ECH tried but failed
    }
     

    All possible error codes from all sorts of curl functions. Future versions may return other values, stay prepared.

    Always add new return codes last. Never EVER remove any. The return codes must remain the same!

    Related Procedures With Parameters
    Related Procedures With Returns

    conv_callback ¶

    conv_callback :: proc "c" (buffer: [^]u8, length: uint) -> code
     

    This prototype applies to all conversion callbacks

    curl_notify_function ¶

    curl_notify_function :: proc "c" (multi_handle: ^CURLM, notification: MULTI_NOTIFY, easy: ^CURL, user_data: rawptr)
     

    * Callback to install via CURLMOPT_NOTIFYFUNCTION.

    debug_callback ¶

    debug_callback :: proc "c" (handle: ^CURL, type: infotype, data: [^]u8, size: uint, userptr: rawptr) -> i32

    easyoption ¶

    easyoption :: struct {
    	name:  cstring,
    	id:    option,
    	type:  easytype,
    	flags: easyoptionflags,
    }
     

    The CURLOPTTYPE_* id ranges can still be used to figure out what type/size to use for curl_easy_setopt() for the given id

    Related Procedures With Parameters
    Related Procedures With Returns

    easyoptionflag ¶

    easyoptionflag :: enum u32 {
    	// "alias" means it is provided for old programs to remain functional, we prefer another name 
    	ALIAS = 0, 
    }

    easyoptionflags ¶

    easyoptionflags :: distinct bit_set[easyoptionflag; u32]

    easytype ¶

    easytype :: enum i32 {
    	OT_LONG,     // long (a range of values)
    	OT_VALUES,   //      (a defined set or bitmask)
    	OT_OFF_T,    // curl_off_t (a range of values)
    	OT_OBJECT,   // pointer (void *)
    	OT_STRING,   //         (char * to null-terminated buffer)
    	OT_SLIST,    //         (struct curl_slist *)
    	OT_CBPTR,    //         (void * passed as-is to a callback)
    	OT_BLOB,     // blob (struct curl_blob *)
    	OT_FUNCTION, // function pointer
    }

    fileinfo ¶

    fileinfo :: struct {
    	filename:  cstring,
    	filetype:  filetype,
    	time:      libc.time_t,
    	// always zero! 
    	perm:      u32,
    	uid:       i32,
    	gid:       i32,
    	size:      i64,
    	hardlinks: i32,
    	strings:   struct {
    		// If some of these fields is not NULL, it is a pointer to b_data. 
    		time:   cstring,
    		perm:   cstring,
    		user:   cstring,
    		group:  cstring,
    		target: cstring,
    	},
    	flags:     finfoflags,
    	// These are libcurl private struct fields. Previously used by libcurl, so
    	// 	they must never be interfered with. 
    	b_data:    [^]u8,
    	b_size:    uint,
    	b_used:    uint,
    }
     

    Information about a single file, used when doing FTP wildcard matching

    filetype ¶

    filetype :: enum i32 {
    	FILE         = 0, 
    	DIRECTORY, 
    	SYMLINK, 
    	DEVICE_BLOCK, 
    	DEVICE_CHAR, 
    	NAMEDPIPE, 
    	SOCKET, 
    	DOOR,             // is possible only on Sun Solaris now
    	UNKNOWN,          // should never occur
    }
     

    enumeration of file types

    finfoflag ¶

    finfoflag :: enum u32 {
    	KNOWN_FILENAME   = 0, 
    	KNOWN_FILETYPE   = 1, 
    	KNOWN_TIME       = 2, 
    	KNOWN_PERM       = 3, 
    	KNOWN_UID        = 4, 
    	KNOWN_GID        = 5, 
    	KNOWN_SIZE       = 6, 
    	KNOWN_HLINKCOUNT = 7, 
    }

    fnmatch_callback ¶

    fnmatch_callback :: proc "c" (ptr: rawptr, pattern: cstring, string: cstring) -> i32
     

    callback type for wildcard downloading pattern matching. If the string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc.

    formget_callback ¶

    formget_callback :: proc "c" (arg: rawptr, buf: [^]u8, len: uint) -> uint
     

    * callback function for curl_formget() The void arg pointer will be the one passed as second argument to * curl_formget(). * The character buffer passed to it must not be freed. * Should return the buffer length passed to it as the argument "len" on * success.

    free_callback ¶

    free_callback :: proc "c" (ptr: rawptr)
    Related Procedures With Parameters

    ftpauth ¶

    ftpauth :: enum i32 {
    	DEFAULT, // let libcurl decide
    	SSL,     // use "AUTH SSL"
    	TLS,     // use "AUTH TLS"
    }
     

    parameter for the CURLOPT_FTPSSLAUTH option

    ftpccc ¶

    ftpccc :: enum i32 {
    	NONE,    // do not send CCC
    	PASSIVE, // Let the server initiate the shutdown
    	ACTIVE,  // Initiate the shutdown
    }
     

    parameter for the CURLOPT_FTP_SSL_CCC option

    ftpcreatedir ¶

    ftpcreatedir :: enum i32 {
    	DIR_NONE, // do NOT create missing dirs!
    	DIR,      // (FTP/SFTP) if CWD fails, try MKD and then CWD
                    again if MKD succeeded, for SFTP this does
                    similar magic
    	_RETRY,   // (FTP only) if CWD fails, try MKD and then CWD
                       again even if MKD failed!
    }
     

    parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option

    ftpmethod ¶

    ftpmethod :: enum i32 {
    	DEFAULT,   // let libcurl pick
    	MULTICWD,  // single CWD operation for each path part
    	NOCWD,     // no CWD at all
    	SINGLECWD, // one CWD to full dir, then work on file
    }
     

    parameter for the CURLOPT_FTP_FILEMETHOD option

    header :: struct {
    	name:   cstring,
    	// this might not use the same case 
    	value:  cstring,
    	amount: uint,
    	// number of headers using this name  
    	index:  uint,
    	// ... of this instance, 0 or higher 
    	origin: header_origin_bits,
    	// see bits below 
    	anchor: rawptr,
    }
    Related Procedures With Parameters

    header_origin_bit ¶

    header_origin_bit :: enum u32 {
    	H_HEADER  = 0, // plain server header
    	H_TRAILER = 1, // trailers
    	H_CONNECT = 2, // CONNECT headers
    	H_1XX     = 3, // 1xx headers
    	H_PSEUDO  = 4, // pseudo headers
    }
     

    'origin' bits

    header_origin_bits ¶

    header_origin_bits :: distinct bit_set[header_origin_bit; u32]
    Related Constants

    hstsentry ¶

    hstsentry :: struct {
    	name:    cstring,
    	namelen: uint,
    	using _: bit_field u32 {
    		includeSubDomains: bool | 1,
    	},
    	expire:  [18]u8,
    }

    hstsread_callback ¶

    hstsread_callback :: proc "c" (easy: ^CURL, e: ^hstsentry, userp: rawptr) -> STScode

    hstswrite_callback ¶

    hstswrite_callback :: proc "c" (easy: ^CURL, e: ^hstsentry, i: ^index, userp: rawptr) -> STScode

    httppost ¶

    httppost :: struct {
    	next:           ^httppost,
    	// next entry in the list 
    	name:           cstring `fmt:"v,name"`,
    	// pointer to allocated name 
    	namelength:     i32,
    	// length of name length 
    	contents:       cstring,
    	// pointer to allocated data contents 
    	contentslength: i32,
    	// length of contents field, see also
    	// 	                                                CURL_HTTPPOST_LARGE 
    	buffer:         [^]u8,
    	// pointer to allocated buffer contents 
    	bufferlength:   i32,
    	// length of buffer field 
    	contenttype:    cstring,
    	// Content-Type 
    	contentheader:  ^slist,
    	// list of extra headers for this form 
    	more:           ^httppost,
    	// if one field name has more than one
    	// 	                                                file, this link should link to following
    	// 	                                                files 
    	flags:          httppost_flags,
    	// as defined below 
    	showfilename:   cstring,
    	// The filename to show. If not set, the
    	// 	                           actual filename will be used (if this
    	// 	                           is a file part) 
    	userp:          rawptr,
    	// custom pointer used for
    	//                                    HTTPPOST_CALLBACK posts 
    	contentlen:     i64,
    }

    httppost_flag ¶

    httppost_flag :: enum i32 {
    	// specified content is a filename 
    	FILENAME    = 0, 
    	// specified content is a filename 
    	READFILE    = 1, 
    	// name is only stored pointer do not free in formfree 
    	PTRNAME     = 2, 
    	// contents is only stored pointer do not free in formfree 
    	PTRCONTENTS = 3, 
    	// upload file from buffer 
    	BUFFER      = 4, 
    	// upload file from pointer contents 
    	PTRBUFFER   = 5, 
    	// upload file contents by using the regular read callback to get the data and
    	// 	   pass the given pointer as custom pointer 
    	CALLBACK    = 6, 
    	// use size in 'contentlen', added in 7.46.0 
    	LARGE       = 7, 
    }

    index ¶

    index :: struct {
    	index: uint,
    	// the provided entry's "index" or count 
    	total: uint,
    }

    infotype ¶

    infotype :: enum i32 {
    	TEXT         = 0, 
    	HEADER_IN,        // 1
    	HEADER_OUT,       // 2
    	DATA_IN,          // 3
    	DATA_OUT,         // 4
    	SSL_DATA_IN,      // 5
    	SSL_DATA_OUT,     // 6
    	END, 
    }
     

    the kind of data that is passed to information_callback

    iocmd ¶

    iocmd :: enum i32 {
    	NOP,         // no operation
    	RESTARTREAD, // restart the read stream from start
    }

    ioctl_callback ¶

    ioctl_callback :: proc "c" (handle: ^CURL, cmd: i32, clientp: rawptr) -> ioerr

    ioerr ¶

    ioerr :: enum i32 {
    	E_OK,          // I/O operation successful
    	E_UNKNOWNCMD,  // command was unknown to callback
    	E_FAILRESTART, // failed to restart the read
    }

    khkey ¶

    khkey :: struct {
    	key:     cstring,
    	// points to a null-terminated string encoded with base64
    	// 	                 if len is zero, otherwise to the "raw" data 
    	len:     uint,
    	keytype: khtype,
    }

    khmatch ¶

    khmatch :: enum i32 {
    	OK,       // match
    	MISMATCH, // host found, key mismatch!
    	MISSING,  // no matching host/key found
    }
     

    this is the set of status codes pass in to the callback

    khstat ¶

    khstat :: enum i32 {
    	FINE_ADD_TO_FILE, 
    	FINE, 
    	REJECT,           // reject the connection, return an error
    	DEFER,            // do not accept it, but we cannot answer right now.
    	           Causes a CURLE_PEER_FAILED_VERIFICATION error but the
    	           connection will be left intact etc
    	FINE_REPLACE,     // accept and replace the wrong key
    }
     

    this is the set of return values expected from the curl_sshkeycallback callback

    khtype ¶

    khtype :: enum i32 {
    	UNKNOWN, 
    	RSA1, 
    	RSA, 
    	DSS, 
    	ECDSA, 
    	ED25519, 
    }

    lock_access ¶

    lock_access :: enum i32 {
    	NONE   = 0, // unspecified action
    	SHARED = 1, // for read perhaps
    	SINGLE = 2, // for write perhaps
    }
     

    Different lock access types

    lock_data ¶

    lock_data :: enum i32 {
    	NONE        = 0, 
    	//  CURL_LOCK_DATA_SHARE is used internally to say that
    	// 	*  the locking is just made to change the internal state of the share
    	// 	*  itself.
    	SHARE, 
    	COOKIE, 
    	DNS, 
    	SSL_SESSION, 
    	CONNECT, 
    	PSL, 
    	HSTS, 
    }
     

    Different data locks for a single share

    lock_function ¶

    lock_function :: proc "c" (handle: ^CURL, data: lock_data, locktype: lock_access, userptr: rawptr)

    malloc_callback ¶

    malloc_callback :: proc "c" (size: uint) -> rawptr
     

    * The following typedef's are signatures of malloc, free, realloc, strdup and * calloc respectively. Function pointers of these types can be passed to the * curl_global_init_mem() function to set user defined memory management * callback routines.

    Related Procedures With Parameters

    mime ¶

    mime :: struct {}
     

    Mime/form handling support.

    Related Procedures With Parameters
    Related Procedures With Returns

    mimepart ¶

    mimepart :: struct {}
     

    Mime part context.

    Related Procedures With Parameters
    Related Procedures With Returns

    multi_timer_callback ¶

    multi_timer_callback :: proc "c" (multi: ^CURLM, timeout_ms: i32, userp: rawptr) -> i32
     

    * Name: curl_multi_timer_callback * * Desc: Called by libcurl whenever the library detects a change in the * maximum number of milliseconds the app is allowed to wait before * curl_multi_socket() or curl_multi_perform() must be called * (to allow libcurl's timed events to take place). * * Returns: The callback should return zero.

    off_t ¶

    off_t :: i64
    Related Procedures With Parameters

    opensocket_callback ¶

    opensocket_callback :: proc "c" (clientp: rawptr, purpose: socktype, address: ^sockaddr) -> socket_t

    option ¶

    option :: enum i32 {
    	// This is the FILE * or void * the regular output should be written to. 
    	WRITEDATA                  = 10001, 
    	// The full URL to get/put 
    	URL                        = 10002, 
    	// Port number to connect to, if other than default. 
    	PORT                       = 3, 
    	// Name of proxy to use. 
    	PROXY                      = 10004, 
    	// "user:password;options" to use when fetching. 
    	USERPWD                    = 10005, 
    	// "user:password" to use with proxy. 
    	PROXYUSERPWD               = 10006, 
    	// Range to get, specified as an ASCII string. 
    	RANGE                      = 10007, 
    	// Specified file stream to upload from (use as input): 
    	READDATA                   = 10009, 
    	// Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
    	// 	* bytes big. 
    	ERRORBUFFER                = 10010, 
    	// Function that will be called to store the output (instead of fwrite). The
    	// 	* parameters will use fwrite() syntax, make sure to follow them. 
    	WRITEFUNCTION              = 20011, 
    	// Function that will be called to read the input (instead of fread). The
    	// 	* parameters will use fread() syntax, make sure to follow them. 
    	READFUNCTION               = 20012, 
    	// Time-out the read operation after this amount of seconds 
    	TIMEOUT                    = 13, 
    	// If CURLOPT_READDATA is used, this can be used to inform libcurl about
    	// 	* how large the file being sent really is. That allows better error
    	// 	* checking and better verifies that the upload was successful. -1 means
    	// 	* unknown size.
    	// 	*
    	// 	* For large file support, there is also a _LARGE version of the key
    	// 	* which takes an off_t type, allowing platforms with larger off_t
    	// 	* sizes to handle larger files. See below for INFILESIZE_LARGE.
    	INFILESIZE                 = 14, 
    	// POST static input fields. 
    	POSTFIELDS                 = 10015, 
    	// Set the referrer page (needed by some CGIs) 
    	REFERER                    = 10016, 
    	// Set the FTP PORT string (interface name, named or numerical IP address)
    	// 	Use i.e '-' to use default address. 
    	FTPPORT                    = 10017, 
    	// Set the User-Agent string (examined by some CGIs) 
    	USERAGENT                  = 10018, 
    	// Set the "low speed limit" 
    	LOW_SPEED_LIMIT            = 19, 
    	// Set the "low speed time" 
    	LOW_SPEED_TIME             = 20, 
    	// Set the continuation offset.
    	// 	*
    	// 	* Note there is also a _LARGE version of this key which uses
    	// 	* off_t types, allowing for large file offsets on platforms which
    	// 	* use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE.
    	RESUME_FROM                = 21, 
    	// Set cookie in request: 
    	COOKIE                     = 10022, 
    	// This points to a linked list of headers, struct curl_slist kind. This
    	// 	list is also used for RTSP (in spite of its name) 
    	HTTPHEADER                 = 10023, 
    	// name of the file keeping your private SSL-certificate 
    	SSLCERT                    = 10025, 
    	// password for the SSL or SSH private key 
    	KEYPASSWD                  = 10026, 
    	// send TYPE parameter? 
    	CRLF                       = 27, 
    	// send linked-list of QUOTE commands 
    	QUOTE                      = 10028, 
    	// send FILE * or void * to store headers to, if you use a callback it
    	// 	is simply passed to the callback unmodified 
    	HEADERDATA                 = 10029, 
    	// point to a file to read the initial cookies from, also enables
    	// 	"cookie awareness" 
    	COOKIEFILE                 = 10031, 
    	// What version to specifically try to use.
    	// 	See CURL_SSLVERSION defines below. 
    	SSLVERSION                 = 32, 
    	// What kind of HTTP time condition to use, see defines 
    	TIMECONDITION              = 33, 
    	// Time to use with the above condition. Specified in number of seconds
    	// 	since 1 Jan 1970 
    	TIMEVALUE                  = 34, 
    	// Custom request, for customizing the get command like
    	// 	HTTP: DELETE, TRACE and others
    	// 	FTP: to use a different list command
    	CUSTOMREQUEST              = 10036, 
    	// FILE handle to use instead of stderr 
    	STDERR                     = 10037, 
    	// send linked-list of post-transfer QUOTE commands 
    	POSTQUOTE                  = 10039, 
    	// talk a lot 
    	VERBOSE                    = 41, 
    	// throw the header out too 
    	HEADER                     = 42, 
    	// shut off the progress meter 
    	NOPROGRESS                 = 43, 
    	// use HEAD to get http document 
    	NOBODY                     = 44, 
    	// no output on http error codes >= 400 
    	FAILONERROR                = 45, 
    	// this is an upload 
    	UPLOAD                     = 46, 
    	// HTTP POST method 
    	POST                       = 47, 
    	// bare names when listing directories 
    	DIRLISTONLY                = 48, 
    	// Append instead of overwrite on upload! 
    	APPEND                     = 50, 
    	// Specify whether to read the user+password from the .netrc or the URL.
    	// 	* This must be one of the CURL_NETRC_* enums below. 
    	NETRC                      = 51, 
    	// use Location: Luke! 
    	FOLLOWLOCATION             = 52, 
    	// transfer data in text/ASCII format 
    	TRANSFERTEXT               = 53, 
    	// Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION
    	// 	callbacks 
    	XFERINFODATA               = 10057, 
    	PROGRESSDATA               = 10057, 
    	// We want the referrer field set automatically when following locations 
    	AUTOREFERER                = 58, 
    	// Port of the proxy, can be set in the proxy string as well with:
    	// 	"[host]:[port]" 
    	PROXYPORT                  = 59, 
    	// size of the POST input data, if strlen() is not good to use 
    	POSTFIELDSIZE              = 60, 
    	// tunnel non-http operations through an HTTP proxy 
    	HTTPPROXYTUNNEL            = 61, 
    	// Set the interface string to use as outgoing network interface 
    	INTERFACE                  = 10062, 
    	// Set the krb4/5 security level, this also enables krb4/5 awareness. This
    	// 	* is a string, 'clear', 'safe', 'confidential' or 'private'. If the string
    	// 	* is set but does not match one of these, 'private' will be used.  
    	KRBLEVEL                   = 10063, 
    	// Set if we should verify the peer in ssl handshake, set 1 to verify. 
    	SSL_VERIFYPEER             = 64, 
    	// The CApath or CAfile used to validate the peer certificate
    	// 	this option is used only if SSL_VERIFYPEER is true 
    	CAINFO                     = 10065, 
    	// Maximum number of http redirects to follow 
    	MAXREDIRS                  = 68, 
    	// Pass a long set to 1 to get the date of the requested document (if
    	// 	possible)! Pass a zero to shut it off. 
    	FILETIME                   = 69, 
    	// This points to a linked list of telnet options 
    	TELNETOPTIONS              = 10070, 
    	// Max amount of cached alive connections 
    	MAXCONNECTS                = 71, 
    	// Set to explicitly use a new connection for the upcoming transfer.
    	// 	Do not use this unless you are absolutely sure of this, as it makes the
    	// 	operation slower and is less friendly for the network. 
    	FRESH_CONNECT              = 74, 
    	// Set to explicitly forbid the upcoming transfer's connection to be reused
    	// 	when done. Do not use this unless you are absolutely sure of this, as it
    	// 	makes the operation slower and is less friendly for the network. 
    	FORBID_REUSE               = 75, 
    	// Time-out connect operations after this amount of seconds, if connects are
    	// 	OK within this time, then fine... This only aborts the connect phase. 
    	CONNECTTIMEOUT             = 78, 
    	// Function that will be called to store headers (instead of fwrite). The
    	// 	* parameters will use fwrite() syntax, make sure to follow them. 
    	HEADERFUNCTION             = 20079, 
    	// Set this to force the HTTP request to get back to GET. Only really usable
    	// 	if POST, PUT or a custom request have been used first.
    	HTTPGET                    = 80, 
    	// Set if we should verify the Common name from the peer certificate in ssl
    	// 	* handshake, set 1 to check existence, 2 to ensure that it matches the
    	// 	* provided hostname. 
    	SSL_VERIFYHOST             = 81, 
    	// Specify which filename to write all known cookies in after completed
    	// 	operation. Set filename to "-" (dash) to make it go to stdout. 
    	COOKIEJAR                  = 10082, 
    	// Specify which TLS 1.2 (1.1, 1.0) ciphers to use 
    	SSL_CIPHER_LIST            = 10083, 
    	// Specify which HTTP version to use! This must be set to one of the
    	// 	CURL_HTTP_VERSION* enums set below. 
    	HTTP_VERSION               = 84, 
    	// Specifically switch on or off the FTP engine's use of the EPSV command. By
    	// 	default, that one will always be attempted before the more traditional
    	// 	PASV command. 
    	FTP_USE_EPSV               = 85, 
    	// type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") 
    	SSLCERTTYPE                = 10086, 
    	// name of the file keeping your private SSL-key 
    	SSLKEY                     = 10087, 
    	// type of the file keeping your private SSL-key ("DER", "PEM", "ENG") 
    	SSLKEYTYPE                 = 10088, 
    	// crypto engine for the SSL-sub system 
    	SSLENGINE                  = 10089, 
    	// set the crypto engine for the SSL-sub system as default
    	// 	the param has no meaning...
    	SSLENGINE_DEFAULT          = 90, 
    	// DNS cache timeout 
    	DNS_CACHE_TIMEOUT          = 92, 
    	// send linked-list of pre-transfer QUOTE commands 
    	PREQUOTE                   = 10093, 
    	// set the debug function 
    	DEBUGFUNCTION              = 20094, 
    	// set the data for the debug function 
    	DEBUGDATA                  = 10095, 
    	// mark this as start of a cookie session 
    	COOKIESESSION              = 96, 
    	// The CApath directory used to validate the peer certificate
    	// 	this option is used only if SSL_VERIFYPEER is true 
    	CAPATH                     = 10097, 
    	// Instruct libcurl to use a smaller receive buffer 
    	BUFFERSIZE                 = 98, 
    	// Instruct libcurl to not use any signal/alarm handlers, even when using
    	// 	timeouts. This option is useful for multi-threaded applications.
    	// 	See libcurl-the-guide for more background information. 
    	NOSIGNAL                   = 99, 
    	// Provide a CURLShare for mutexing non-ts data 
    	SHARE                      = 10100, 
    	// indicates type of proxy. accepted values are CURLPROXY_HTTP (default),
    	// 	CURLPROXY_HTTPS, CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and
    	// 	CURLPROXY_SOCKS5. 
    	PROXYTYPE                  = 101, 
    	// Set the Accept-Encoding string. Use this to tell a server you would like
    	// 	the response to be compressed. Before 7.21.6, this was known as
    	// 	CURLOPT_ENCODING 
    	ACCEPT_ENCODING            = 10102, 
    	// Set pointer to private data 
    	PRIVATE                    = 10103, 
    	// Set aliases for HTTP 200 in the HTTP Response header 
    	HTTP200ALIASES             = 10104, 
    	// Continue to send authentication (user+password) when following locations,
    	// 	even when hostname changed. This can potentially send off the name
    	// 	and password to whatever host the server decides. 
    	UNRESTRICTED_AUTH          = 105, 
    	// Specifically switch on or off the FTP engine's use of the EPRT command (
    	// 	it also disables the LPRT attempt). By default, those ones will always be
    	// 	attempted before the good old traditional PORT command. 
    	FTP_USE_EPRT               = 106, 
    	// Set this to a bitmask value to enable the particular authentications
    	// 	methods you like. Use this in combination with CURLOPT_USERPWD.
    	// 	Note that setting multiple bits may cause extra network round-trips. 
    	HTTPAUTH                   = 107, 
    	// Set the ssl context callback function, currently only for OpenSSL or
    	// 	wolfSSL ssl_ctx, or mbedTLS mbedtls_ssl_config in the second argument.
    	// 	The function must match the curl_ssl_ctx_callback prototype. 
    	SSL_CTX_FUNCTION           = 20108, 
    	// Set the userdata for the ssl context callback function's third
    	// 	argument 
    	SSL_CTX_DATA               = 10109, 
    	// FTP Option that causes missing dirs to be created on the remote server.
    	// 	In 7.19.4 we introduced the convenience enums for this option using the
    	// 	CURLFTP_CREATE_DIR prefix.
    	FTP_CREATE_MISSING_DIRS    = 110, 
    	// Set this to a bitmask value to enable the particular authentications
    	// 	methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
    	// 	Note that setting multiple bits may cause extra network round-trips. 
    	PROXYAUTH                  = 111, 
    	// Option that changes the timeout, in seconds, associated with getting a
    	// 	response. This is different from transfer timeout time and essentially
    	// 	places a demand on the server to acknowledge commands in a timely
    	// 	manner. For FTP, SMTP, IMAP and POP3. 
    	SERVER_RESPONSE_TIMEOUT    = 112, 
    	// Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
    	// 	tell libcurl to use those IP versions only. This only has effect on
    	// 	systems with support for more than one, i.e IPv4 _and_ IPv6. 
    	IPRESOLVE                  = 113, 
    	// Set this option to limit the size of a file that will be downloaded from
    	// 	an HTTP or FTP server.
    	// 
    	// 	Note there is also _LARGE version which adds large file support for
    	// 	platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. 
    	MAXFILESIZE                = 114, 
    	// See the comment for INFILESIZE above, but in short, specifies
    	// 	* the size of the file being uploaded.  -1 means unknown.
    	INFILESIZE_LARGE           = 30115, 
    	// Sets the continuation offset. There is also a CURLOPTTYPE_LONG version
    	// 	* of this; look above for RESUME_FROM.
    	RESUME_FROM_LARGE          = 30116, 
    	// Sets the maximum size of data that will be downloaded from
    	// 	* an HTTP or FTP server. See MAXFILESIZE above for the LONG version.
    	MAXFILESIZE_LARGE          = 30117, 
    	// Set this option to the filename of your .netrc file you want libcurl
    	// 	to parse (using the CURLOPT_NETRC option). If not set, libcurl will do
    	// 	a poor attempt to find the user's home directory and check for a .netrc
    	// 	file in there. 
    	NETRC_FILE                 = 10118, 
    	// Enable SSL/TLS for FTP, pick one of:
    	// 	CURLUSESSL_TRY     - try using SSL, proceed anyway otherwise
    	// 	CURLUSESSL_CONTROL - SSL for the control connection or fail
    	// 	CURLUSESSL_ALL     - SSL for all communication or fail
    	USE_SSL                    = 119, 
    	// The _LARGE version of the standard POSTFIELDSIZE option 
    	POSTFIELDSIZE_LARGE        = 30120, 
    	// Enable/disable the TCP Nagle algorithm 
    	TCP_NODELAY                = 121, 
    	// When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option
    	// 	can be used to change libcurl's default action which is to first try
    	// 	"AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK
    	// 	response has been received.
    	// 
    	// 	Available parameters are:
    	// 	CURLFTPAUTH_DEFAULT - let libcurl decide
    	// 	CURLFTPAUTH_SSL     - try "AUTH SSL" first, then TLS
    	// 	CURLFTPAUTH_TLS     - try "AUTH TLS" first, then SSL
    	FTPSSLAUTH                 = 129, 
    	// null-terminated string for pass on to the FTP server when asked for
    	// 	"account" info 
    	FTP_ACCOUNT                = 10134, 
    	// feed cookie into cookie engine 
    	COOKIELIST                 = 10135, 
    	// ignore Content-Length 
    	IGNORE_CONTENT_LENGTH      = 136, 
    	// Set to non-zero to skip the IP address received in a 227 PASV FTP server
    	// 	response. Typically used for FTP-SSL purposes but is not restricted to
    	// 	that. libcurl will then instead use the same IP address it used for the
    	// 	control connection. 
    	FTP_SKIP_PASV_IP           = 137, 
    	// Select "file method" to use when doing FTP, see the curl_ftpmethod
    	// 	above. 
    	FTP_FILEMETHOD             = 138, 
    	// Local port number to bind the socket to 
    	LOCALPORT                  = 139, 
    	// Number of ports to try, including the first one set with LOCALPORT.
    	// 	Thus, setting it to 1 will make no additional attempts but the first.
    	LOCALPORTRANGE             = 140, 
    	// no transfer, set up connection and let application use the socket by
    	// 	extracting it with CURLINFO_LASTSOCKET 
    	CONNECT_ONLY               = 141, 
    	// if the connection proceeds too quickly then need to slow it down 
    	// limit-rate: maximum number of bytes per second to send or receive 
    	MAX_SEND_SPEED_LARGE       = 30145, 
    	MAX_RECV_SPEED_LARGE       = 30146, 
    	// Pointer to command string to send if USER/PASS fails. 
    	FTP_ALTERNATIVE_TO_USER    = 10147, 
    	// callback function for setting socket options 
    	SOCKOPTFUNCTION            = 20148, 
    	SOCKOPTDATA                = 10149, 
    	// set to 0 to disable session ID reuse for this transfer, default is
    	// 	enabled (== 1) 
    	SSL_SESSIONID_CACHE        = 150, 
    	// allowed SSH authentication methods 
    	SSH_AUTH_TYPES             = 151, 
    	// Used by scp/sftp to do public/private key authentication 
    	SSH_PUBLIC_KEYFILE         = 10152, 
    	SSH_PRIVATE_KEYFILE        = 10153, 
    	// Send CCC (Clear Command Channel) after authentication 
    	FTP_SSL_CCC                = 154, 
    	// Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution 
    	TIMEOUT_MS                 = 155, 
    	CONNECTTIMEOUT_MS          = 156, 
    	// set to zero to disable the libcurl's decoding and thus pass the raw body
    	// 	data to the application even when it is encoded/compressed 
    	HTTP_TRANSFER_DECODING     = 157, 
    	HTTP_CONTENT_DECODING      = 158, 
    	// Permission used when creating new files and directories on the remote
    	// 	server for protocols that support it, SFTP/SCP/FILE 
    	NEW_FILE_PERMS             = 159, 
    	NEW_DIRECTORY_PERMS        = 160, 
    	// Set the behavior of POST when redirecting. Values must be set to one
    	// 	of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 
    	POSTREDIR                  = 161, 
    	// used by scp/sftp to verify the host's public key 
    	SSH_HOST_PUBLIC_KEY_MD5    = 10162, 
    	// Callback function for opening socket (instead of socket(2)). Optionally,
    	// 	callback is able change the address or refuse to connect returning
    	// 	CURL_SOCKET_BAD. The callback should have type
    	// 	curl_opensocket_callback 
    	OPENSOCKETFUNCTION         = 20163, 
    	OPENSOCKETDATA             = 10164, 
    	// POST volatile input fields. 
    	COPYPOSTFIELDS             = 10165, 
    	// set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy 
    	PROXY_TRANSFER_MODE        = 166, 
    	// Callback function for seeking in the input stream 
    	SEEKFUNCTION               = 20167, 
    	SEEKDATA                   = 10168, 
    	// CRL file 
    	CRLFILE                    = 10169, 
    	// Issuer certificate 
    	ISSUERCERT                 = 10170, 
    	// (IPv6) Address scope 
    	ADDRESS_SCOPE              = 171, 
    	// Collect certificate chain info and allow it to get retrievable with
    	// 	CURLINFO_CERTINFO after the transfer is complete. 
    	CERTINFO                   = 172, 
    	// "name" and "pwd" to use when fetching. 
    	USERNAME                   = 10173, 
    	PASSWORD                   = 10174, 
    	// "name" and "pwd" to use with Proxy when fetching. 
    	PROXYUSERNAME              = 10175, 
    	PROXYPASSWORD              = 10176, 
    	// Comma separated list of hostnames defining no-proxy zones. These should
    	// 	match both hostnames directly, and hostnames within a domain. For
    	// 	example, local.com will match local.com and www.local.com, but NOT
    	// 	notlocal.com or www.notlocal.com. For compatibility with other
    	// 	implementations of this, .local.com will be considered to be the same as
    	// 	local.com. A single * is the only valid wildcard, and effectively
    	// 	disables the use of proxy. 
    	NOPROXY                    = 10177, 
    	// block size for TFTP transfers 
    	TFTP_BLKSIZE               = 178, 
    	// Socks Service 
    	SOCKS5_GSSAPI_NEC          = 180, 
    	// set the SSH knownhost filename to use 
    	SSH_KNOWNHOSTS             = 10183, 
    	// set the SSH host key callback, must point to a curl_sshkeycallback
    	// 	function 
    	SSH_KEYFUNCTION            = 20184, 
    	// set the SSH host key callback custom pointer 
    	SSH_KEYDATA                = 10185, 
    	// set the SMTP mail originator 
    	MAIL_FROM                  = 10186, 
    	// set the list of SMTP mail receiver(s) 
    	MAIL_RCPT                  = 10187, 
    	// FTP: send PRET before PASV 
    	FTP_USE_PRET               = 188, 
    	// RTSP request method (OPTIONS, SETUP, PLAY, etc...) 
    	RTSP_REQUEST               = 189, 
    	// The RTSP session identifier 
    	RTSP_SESSION_ID            = 10190, 
    	// The RTSP stream URI 
    	RTSP_STREAM_URI            = 10191, 
    	// The Transport: header to use in RTSP requests 
    	RTSP_TRANSPORT             = 10192, 
    	// Manually initialize the client RTSP CSeq for this handle 
    	RTSP_CLIENT_CSEQ           = 193, 
    	// Manually initialize the server RTSP CSeq for this handle 
    	RTSP_SERVER_CSEQ           = 194, 
    	// The stream to pass to INTERLEAVEFUNCTION. 
    	INTERLEAVEDATA             = 10195, 
    	// Let the application define a custom write method for RTP data 
    	INTERLEAVEFUNCTION         = 20196, 
    	// Turn on wildcard matching 
    	WILDCARDMATCH              = 197, 
    	// Directory matching callback called before downloading of an
    	// 	individual file (chunk) started 
    	CHUNK_BGN_FUNCTION         = 20198, 
    	// Directory matching callback called after the file (chunk)
    	// 	was downloaded, or skipped 
    	CHUNK_END_FUNCTION         = 20199, 
    	// Change match (fnmatch-like) callback for wildcard matching 
    	FNMATCH_FUNCTION           = 20200, 
    	// Let the application define custom chunk data pointer 
    	CHUNK_DATA                 = 10201, 
    	// FNMATCH_FUNCTION user pointer 
    	FNMATCH_DATA               = 10202, 
    	// send linked-list of name:port:address sets 
    	RESOLVE                    = 10203, 
    	// Set a username for authenticated TLS 
    	TLSAUTH_USERNAME           = 10204, 
    	// Set a password for authenticated TLS 
    	TLSAUTH_PASSWORD           = 10205, 
    	// Set authentication type for authenticated TLS 
    	TLSAUTH_TYPE               = 10206, 
    	// Set to 1 to enable the "TE:" header in HTTP requests to ask for
    	// 	compressed transfer-encoded responses. Set to 0 to disable the use of TE:
    	// 	in outgoing requests. The current default is 0, but it might change in a
    	// 	future libcurl release.
    	// 
    	// 	libcurl will ask for the compressed methods it knows of, and if that
    	// 	is not any, it will not ask for transfer-encoding at all even if this
    	// 	option is set to 1.
    	TRANSFER_ENCODING          = 207, 
    	// Callback function for closing socket (instead of close(2)). The callback
    	// 	should have type curl_closesocket_callback 
    	CLOSESOCKETFUNCTION        = 20208, 
    	CLOSESOCKETDATA            = 10209, 
    	// allow GSSAPI credential delegation 
    	GSSAPI_DELEGATION          = 210, 
    	// Set the name servers to use for DNS resolution.
    	// 	* Only supported by the c-ares DNS backend 
    	DNS_SERVERS                = 10211, 
    	// Time-out accept operations (currently for FTP only) after this amount
    	// 	of milliseconds. 
    	ACCEPTTIMEOUT_MS           = 212, 
    	// Set TCP keepalive 
    	TCP_KEEPALIVE              = 213, 
    	// non-universal keepalive knobs (Linux, AIX, HP-UX, more) 
    	TCP_KEEPIDLE               = 214, 
    	TCP_KEEPINTVL              = 215, 
    	// Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* 
    	SSL_OPTIONS                = 216, 
    	// Set the SMTP auth originator 
    	MAIL_AUTH                  = 10217, 
    	// Enable/disable SASL initial response 
    	SASL_IR                    = 218, 
    	// Function that will be called instead of the internal progress display
    	// 	* function. This function should be defined as the curl_xferinfo_callback
    	// 	* prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) 
    	XFERINFOFUNCTION           = 20219, 
    	// The XOAUTH2 bearer token 
    	XOAUTH2_BEARER             = 10220, 
    	// Set the interface string to use as outgoing network
    	// 	* interface for DNS requests.
    	// 	* Only supported by the c-ares DNS backend 
    	DNS_INTERFACE              = 10221, 
    	// Set the local IPv4 address to use for outgoing DNS requests.
    	// 	* Only supported by the c-ares DNS backend 
    	DNS_LOCAL_IP4              = 10222, 
    	// Set the local IPv6 address to use for outgoing DNS requests.
    	// 	* Only supported by the c-ares DNS backend 
    	DNS_LOCAL_IP6              = 10223, 
    	// Set authentication options directly 
    	LOGIN_OPTIONS              = 10224, 
    	// Enable/disable TLS ALPN extension (http2 over ssl might fail without) 
    	SSL_ENABLE_ALPN            = 226, 
    	// Time to wait for a response to an HTTP request containing an
    	// 	* Expect: 100-continue header before sending the data anyway. 
    	EXPECT_100_TIMEOUT_MS      = 227, 
    	// This points to a linked list of headers used for proxy requests only,
    	// 	struct curl_slist kind 
    	PROXYHEADER                = 10228, 
    	// Pass in a bitmask of "header options" 
    	HEADEROPT                  = 229, 
    	// The public key in DER form used to validate the peer public key
    	// 	this option is used only if SSL_VERIFYPEER is true 
    	PINNEDPUBLICKEY            = 10230, 
    	// Path to Unix domain socket 
    	UNIX_SOCKET_PATH           = 10231, 
    	// Set if we should verify the certificate status. 
    	SSL_VERIFYSTATUS           = 232, 
    	// Do not squash dot-dot sequences 
    	PATH_AS_IS                 = 234, 
    	// Proxy Service Name 
    	PROXY_SERVICE_NAME         = 10235, 
    	// Service Name 
    	SERVICE_NAME               = 10236, 
    	// Wait/do not wait for pipe/mutex to clarify 
    	PIPEWAIT                   = 237, 
    	// Set the protocol used when curl is given a URL without a protocol 
    	DEFAULT_PROTOCOL           = 10238, 
    	// Set stream weight, 1 - 256 (default is 16) 
    	STREAM_WEIGHT              = 239, 
    	// Set stream dependency on another curl handle 
    	STREAM_DEPENDS             = 10240, 
    	// Set E-xclusive stream dependency on another curl handle 
    	STREAM_DEPENDS_E           = 10241, 
    	// Do not send any tftp option requests to the server 
    	TFTP_NO_OPTIONS            = 242, 
    	// Linked-list of host:port:connect-to-host:connect-to-port,
    	// 	overrides the URL's host:port (only for the network layer) 
    	CONNECT_TO                 = 10243, 
    	// Set TCP Fast Open 
    	TCP_FASTOPEN               = 244, 
    	// Continue to send data if the server responds early with an
    	// 	* HTTP status code >= 300 
    	KEEP_SENDING_ON_ERROR      = 245, 
    	// The CApath or CAfile used to validate the proxy certificate
    	// 	this option is used only if PROXY_SSL_VERIFYPEER is true 
    	PROXY_CAINFO               = 10246, 
    	// The CApath directory used to validate the proxy certificate
    	// 	this option is used only if PROXY_SSL_VERIFYPEER is true 
    	PROXY_CAPATH               = 10247, 
    	// Set if we should verify the proxy in ssl handshake,
    	// 	set 1 to verify. 
    	PROXY_SSL_VERIFYPEER       = 248, 
    	// Set if we should verify the Common name from the proxy certificate in ssl
    	// 	* handshake, set 1 to check existence, 2 to ensure that it matches
    	// 	* the provided hostname. 
    	PROXY_SSL_VERIFYHOST       = 249, 
    	// What version to specifically try to use for proxy.
    	// 	See CURL_SSLVERSION defines below. 
    	PROXY_SSLVERSION           = 250, 
    	// Set a username for authenticated TLS for proxy 
    	PROXY_TLSAUTH_USERNAME     = 10251, 
    	// Set a password for authenticated TLS for proxy 
    	PROXY_TLSAUTH_PASSWORD     = 10252, 
    	// Set authentication type for authenticated TLS for proxy 
    	PROXY_TLSAUTH_TYPE         = 10253, 
    	// name of the file keeping your private SSL-certificate for proxy 
    	PROXY_SSLCERT              = 10254, 
    	// type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") for
    	// 	proxy 
    	PROXY_SSLCERTTYPE          = 10255, 
    	// name of the file keeping your private SSL-key for proxy 
    	PROXY_SSLKEY               = 10256, 
    	// type of the file keeping your private SSL-key ("DER", "PEM", "ENG") for
    	// 	proxy 
    	PROXY_SSLKEYTYPE           = 10257, 
    	// password for the SSL private key for proxy 
    	PROXY_KEYPASSWD            = 10258, 
    	// Specify which TLS 1.2 (1.1, 1.0) ciphers to use for proxy 
    	PROXY_SSL_CIPHER_LIST      = 10259, 
    	// CRL file for proxy 
    	PROXY_CRLFILE              = 10260, 
    	// Enable/disable specific SSL features with a bitmask for proxy, see
    	// 	CURLSSLOPT_* 
    	PROXY_SSL_OPTIONS          = 261, 
    	// Name of pre proxy to use. 
    	PRE_PROXY                  = 10262, 
    	// The public key in DER form used to validate the proxy public key
    	// 	this option is used only if PROXY_SSL_VERIFYPEER is true 
    	PROXY_PINNEDPUBLICKEY      = 10263, 
    	// Path to an abstract Unix domain socket 
    	ABSTRACT_UNIX_SOCKET       = 10264, 
    	// Suppress proxy CONNECT response headers from user callbacks 
    	SUPPRESS_CONNECT_HEADERS   = 265, 
    	// The request target, instead of extracted from the URL 
    	REQUEST_TARGET             = 10266, 
    	// bitmask of allowed auth methods for connections to SOCKS5 proxies 
    	SOCKS5_AUTH                = 267, 
    	// Enable/disable SSH compression 
    	SSH_COMPRESSION            = 268, 
    	// Post MIME data. 
    	MIMEPOST                   = 10269, 
    	// Time to use with the CURLOPT_TIMECONDITION. Specified in number of
    	// 	seconds since 1 Jan 1970. 
    	TIMEVALUE_LARGE            = 30270, 
    	// Head start in milliseconds to give happy eyeballs. 
    	HAPPY_EYEBALLS_TIMEOUT_MS  = 271, 
    	// Function that will be called before a resolver request is made 
    	RESOLVER_START_FUNCTION    = 20272, 
    	// User data to pass to the resolver start callback. 
    	RESOLVER_START_DATA        = 10273, 
    	// send HAProxy PROXY protocol header? 
    	HAPROXYPROTOCOL            = 274, 
    	// shuffle addresses before use when DNS returns multiple 
    	DNS_SHUFFLE_ADDRESSES      = 275, 
    	// Specify which TLS 1.3 ciphers suites to use 
    	TLS13_CIPHERS              = 10276, 
    	PROXY_TLS13_CIPHERS        = 10277, 
    	// Disallow specifying username/login in URL. 
    	DISALLOW_USERNAME_IN_URL   = 278, 
    	// DNS-over-HTTPS URL 
    	DOH_URL                    = 10279, 
    	// Preferred buffer size to use for uploads 
    	UPLOAD_BUFFERSIZE          = 280, 
    	// Time in ms between connection upkeep calls for long-lived connections. 
    	UPKEEP_INTERVAL_MS         = 281, 
    	// Specify URL using CURL URL API. 
    	CURLU                      = 10282, 
    	// add trailing data just after no more data is available 
    	TRAILERFUNCTION            = 20283, 
    	// pointer to be passed to HTTP_TRAILER_FUNCTION 
    	TRAILERDATA                = 10284, 
    	// set this to 1L to allow HTTP/0.9 responses or 0L to disallow 
    	HTTP09_ALLOWED             = 285, 
    	// alt-svc control bitmask 
    	ALTSVC_CTRL                = 286, 
    	// alt-svc cache filename to possibly read from/write to 
    	ALTSVC                     = 10287, 
    	// maximum age (idle time) of a connection to consider it for reuse
    	// 	* (in seconds) 
    	MAXAGE_CONN                = 288, 
    	// SASL authorization identity 
    	SASL_AUTHZID               = 10289, 
    	// allow RCPT TO command to fail for some recipients 
    	MAIL_RCPT_ALLOWFAILS       = 290, 
    	// the private SSL-certificate as a "blob" 
    	SSLCERT_BLOB               = 40291, 
    	SSLKEY_BLOB                = 40292, 
    	PROXY_SSLCERT_BLOB         = 40293, 
    	PROXY_SSLKEY_BLOB          = 40294, 
    	ISSUERCERT_BLOB            = 40295, 
    	// Issuer certificate for proxy 
    	PROXY_ISSUERCERT           = 10296, 
    	PROXY_ISSUERCERT_BLOB      = 40297, 
    	// the EC curves requested by the TLS client (RFC 8422, 5.1);
    	// 	* OpenSSL support via 'set_groups'/'set_curves':
    	// 	* https://docs.openssl.org/master/man3/SSL_CTX_set1_curves/
    	SSL_EC_CURVES              = 10298, 
    	// HSTS bitmask 
    	HSTS_CTRL                  = 299, 
    	// HSTS filename 
    	HSTS                       = 10300, 
    	// HSTS read callback 
    	HSTSREADFUNCTION           = 20301, 
    	HSTSREADDATA               = 10302, 
    	// HSTS write callback 
    	HSTSWRITEFUNCTION          = 20303, 
    	HSTSWRITEDATA              = 10304, 
    	// Parameters for V4 signature 
    	AWS_SIGV4                  = 10305, 
    	// Same as CURLOPT_SSL_VERIFYPEER but for DoH (DNS-over-HTTPS) servers. 
    	DOH_SSL_VERIFYPEER         = 306, 
    	// Same as CURLOPT_SSL_VERIFYHOST but for DoH (DNS-over-HTTPS) servers. 
    	DOH_SSL_VERIFYHOST         = 307, 
    	// Same as CURLOPT_SSL_VERIFYSTATUS but for DoH (DNS-over-HTTPS) servers. 
    	DOH_SSL_VERIFYSTATUS       = 308, 
    	// The CA certificates as "blob" used to validate the peer certificate
    	// 	this option is used only if SSL_VERIFYPEER is true 
    	CAINFO_BLOB                = 40309, 
    	// The CA certificates as "blob" used to validate the proxy certificate
    	// 	this option is used only if PROXY_SSL_VERIFYPEER is true 
    	PROXY_CAINFO_BLOB          = 40310, 
    	// used by scp/sftp to verify the host's public key 
    	SSH_HOST_PUBLIC_KEY_SHA256 = 10311, 
    	// Function that will be called immediately before the initial request
    	// 	is made on a connection (after any protocol negotiation step).  
    	PREREQFUNCTION             = 20312, 
    	// Data passed to the CURLOPT_PREREQFUNCTION callback 
    	PREREQDATA                 = 10313, 
    	// maximum age (since creation) of a connection to consider it for reuse
    	// 	* (in seconds) 
    	MAXLIFETIME_CONN           = 314, 
    	// Set MIME option flags. 
    	MIME_OPTIONS               = 315, 
    	// set the SSH host key callback, must point to a curl_sshkeycallback
    	// 	function 
    	SSH_HOSTKEYFUNCTION        = 20316, 
    	// set the SSH host key callback custom pointer 
    	SSH_HOSTKEYDATA            = 10317, 
    	// specify which protocols that are allowed to be used for the transfer,
    	// 	which thus helps the app which takes URLs from users or other external
    	// 	inputs and want to restrict what protocol(s) to deal with. Defaults to
    	// 	all built-in protocols. 
    	PROTOCOLS_STR              = 10318, 
    	// specify which protocols that libcurl is allowed to follow directs to 
    	REDIR_PROTOCOLS_STR        = 10319, 
    	// WebSockets options 
    	WS_OPTIONS                 = 320, 
    	// CA cache timeout 
    	CA_CACHE_TIMEOUT           = 321, 
    	// Can leak things, gonna exit() soon 
    	QUICK_EXIT                 = 322, 
    	// set a specific client IP for HAProxy PROXY protocol header? 
    	HAPROXY_CLIENT_IP          = 10323, 
    	// millisecond version 
    	SERVER_RESPONSE_TIMEOUT_MS = 324, 
    	// set ECH configuration 
    	ECH                        = 10325, 
    	// maximum number of keepalive probes (Linux, *BSD, macOS, etc.) 
    	TCP_KEEPCNT                = 326, 
    	UPLOAD_FLAGS               = 327, 
    	// set TLS supported signature algorithms 
    	SSL_SIGNATURE_ALGORITHMS   = 10328, 
    }
     

    All CURLOPT_ values.

    Related Procedures With Parameters
    Related Constants

    platform_fd_set ¶

    platform_fd_set :: sys_windows.fd_set
    Related Procedures With Parameters

    platform_sockaddr ¶

    platform_sockaddr :: sys_windows.sockaddr

    prereq_callback ¶

    prereq_callback :: proc "c" (clientp: rawptr, conn_primary_ip: cstring, conn_local_ip: cstring, conn_primary_port: i32, conn_local_port: i32) -> i32
     

    This is the CURLOPT_PREREQFUNCTION callback prototype.

    progress_callback ¶

    progress_callback :: proc "c" (clientp: rawptr, dltotal: f64, dlnow: f64, ultotal: f64, ulnow: f64) -> i32
     

    This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now considered deprecated but was the only choice up until 7.31.0

    proxycode ¶

    proxycode :: enum i32 {
    	OK, 
    	BAD_ADDRESS_TYPE, 
    	BAD_VERSION, 
    	CLOSED, 
    	GSSAPI, 
    	GSSAPI_PERMSG, 
    	GSSAPI_PROTECTION, 
    	IDENTD, 
    	IDENTD_DIFFER, 
    	LONG_HOSTNAME, 
    	LONG_PASSWD, 
    	LONG_USER, 
    	NO_AUTH, 
    	RECV_ADDRESS, 
    	RECV_AUTH, 
    	RECV_CONNECT, 
    	RECV_REQACK, 
    	REPLY_ADDRESS_TYPE_NOT_SUPPORTED, 
    	REPLY_COMMAND_NOT_SUPPORTED, 
    	REPLY_CONNECTION_REFUSED, 
    	REPLY_GENERAL_SERVER_FAILURE, 
    	REPLY_HOST_UNREACHABLE, 
    	REPLY_NETWORK_UNREACHABLE, 
    	REPLY_NOT_ALLOWED, 
    	REPLY_TTL_EXPIRED, 
    	REPLY_UNASSIGNED, 
    	REQUEST_FAILED, 
    	RESOLVE_HOST, 
    	SEND_AUTH, 
    	SEND_CONNECT, 
    	SEND_REQUEST, 
    	UNKNOWN_FAIL, 
    	UNKNOWN_MODE, 
    	USER_REJECTED, 
    }
     

    * Proxy error codes. Returned in CURLINFO_PROXY_ERROR if CURLE_PROXY was * return for the transfers.

    proxytype ¶

    proxytype :: enum i32 {
    	HTTP            = 0, // added in 7.10, new in 7.19.4 default is to use
    	                        CONNECT HTTP/1.1
    	HTTP_1_0        = 1, // added in 7.19.4, force to use CONNECT
                                   HTTP/1.0
    	HTTPS           = 2, // HTTPS but stick to HTTP/1 added in 7.52.0
    	HTTPS2          = 3, // HTTPS and attempt HTTP/2 added in 8.2.0
    	SOCKS4          = 4, // support added in 7.15.2, enum existed already
    	                        in 7.10
    	SOCKS5          = 5, // added in 7.10
    	SOCKS4A         = 6, // added in 7.18.0
    	SOCKS5_HOSTNAME = 7, // Use the SOCKS5 protocol but pass along the
    	                        hostname rather than the IP address. added
    	                        in 7.18.0
    }
     

    this enum was added in 7.10

    push_callback ¶

    push_callback :: proc "c" (parent: ^CURL, easy: ^CURL, num_headers: uint, headers: [^]pushheaders, userp: rawptr) -> i32

    pushheaders ¶

    pushheaders :: struct {}
    Related Procedures With Parameters

    read_callback ¶

    read_callback :: proc "c" (buffer: [^]u8, size: uint, nitems: uint, instream: rawptr) -> uint
    Related Procedures With Parameters

    realloc_callback ¶

    realloc_callback :: proc "c" (ptr: rawptr, size: uint) -> rawptr
    Related Procedures With Parameters

    resolver_start_callback ¶

    resolver_start_callback :: proc "c" (resolver_state: rawptr, reserved: rawptr, userdata: rawptr) -> i32
     

    This callback will be called when a new resolver request is made

    seek_callback ¶

    seek_callback :: proc "c" (instream: rawptr, offset: i64, origin: i32) -> i32
     

    'whence'

    Related Procedures With Parameters

    slist ¶

    slist :: struct {
    	data: [^]u8,
    	next: ^slist,
    }
     

    linked-list structure for the CURLOPT_QUOTE option (and other)

    Related Procedures With Parameters

    sockaddr ¶

    sockaddr :: struct {
    	family:   i32,
    	socktype: i32,
    	protocol: i32,
    	addrlen:  u32,
    	// addrlen was a socklen_t type before 7.18.0 but it
    	//                            turned really ugly and painful on the systems that
    	//                            lack this type 
    	addr:     sys_windows.sockaddr,
    }

    socket_callback ¶

    socket_callback :: proc "c" (easy: ^CURL, s: socket_t, what: i32, userp: rawptr, socketp: rawptr) -> i32
     

    private socket pointer

    socket_t ¶

    socket_t :: distinct i32
    Related Procedures With Parameters
    Related Constants

    sockopt_callback ¶

    sockopt_callback :: proc "c" (clientp: rawptr, curlfd: socket_t, purpose: socktype) -> i32

    socktype ¶

    socktype :: enum i32 {
    	IPCXN,  // socket created for a specific IP connection
    	ACCEPT, // socket created by accept() call
    	LAST,   // never use
    }

    sshhostkeycallback ¶

    sshhostkeycallback :: proc "c" (clientp: rawptr, keytype: i32, key: cstring, keylen: uint) -> code
     

    return CURLE_OK to accept

    sshkeycallback ¶

    sshkeycallback :: proc "c" (easy: ^CURL, knownkey: ^khkey, foundkey: ^khkey, _: khmatch, clientp: rawptr) -> i32
     

    custom pointer passed with

    ssl_backend ¶

    ssl_backend :: struct {
    	id:   sslbackend,
    	name: cstring,
    }
     

    * NAME curl_global_sslset() * * DESCRIPTION * * When built with multiple SSL backends, curl_global_sslset() allows to * choose one. This function can only be called once, and it must be called before* curl_global_init(). * * The backend can be identified by the id (e.g. CURLSSLBACKEND_OPENSSL). The * backend can also be specified via the name parameter (passing -1 as id). If * both id and name are specified, the name will be ignored. If neither id nor * name are specified, the function will fail with CURLSSLSET_UNKNOWN_BACKEND * and set the "avail" pointer to the NULL-terminated list of available * backends. * * Upon success, the function returns CURLSSLSET_OK. * * If the specified SSL backend is not available, the function returns * CURLSSLSET_UNKNOWN_BACKEND and sets the "avail" pointer to a * NULL-terminated list of available SSL backends. * * The SSL backend can be set only once. If it has already been set, a * subsequent attempt to change it will result in a CURLSSLSET_TOO_LATE.

    ssl_ctx_callback ¶

    ssl_ctx_callback :: proc "c" (curl: ^CURL, ssl_ctx: rawptr, userptr: rawptr) -> code

    sslbackend ¶

    sslbackend :: enum i32 {
    	NONE            = 0, 
    	OPENSSL         = 1, 
    	GNUTLS          = 2, 
    	NSS             = 3,  // CURL_DEPRECATED(8.3.0, "")
    	OBSOLETE4       = 4,  // Was QSOSSL.
    	GSKIT           = 5,  // CURL_DEPRECATED(8.3.0, "")
    	POLARSSL        = 6,  // CURL_DEPRECATED(7.69.0, "")
    	WOLFSSL         = 7, 
    	SCHANNEL        = 8, 
    	SECURETRANSPORT = 9,  // CURL_DEPRECATED(8.15.0, "")
    	AXTLS           = 10, // CURL_DEPRECATED(7.61.0, "")
    	MBEDTLS         = 11, 
    	MESALINK        = 12, // CURL_DEPRECATED(7.82.0, "")
    	BEARSSL         = 13, // CURL_DEPRECATED(8.15.0, "")
    	RUSTLS          = 14, 
    	AWSLC           = 1, 
    	BORINGSSL       = 1, 
    	LIBRESSL        = 1, 
    }
    Related Procedures With Parameters

    ssls_export_cb ¶

    ssls_export_cb :: proc "c" (handle: ^CURL, userptr: rawptr, session_key: cstring, shmac: [^]u8, shmac_len: uint, sdata: [^]u8, sdata_len: uint, valid_until: i64, ietf_tls_id: i32, alpn: cstring, earlydata_max: uint) -> code
     

    This is the curl_ssls_export_cb callback prototype. It is passed to curl_easy_ssls_export() to extract SSL sessions/tickets.

    Related Procedures With Parameters

    sslset ¶

    sslset :: enum i32 {
    	OK              = 0, 
    	UNKNOWN_BACKEND, 
    	TOO_LATE, 
    	NO_BACKENDS,         // libcurl was built without any SSL support
    }
    Related Procedures With Returns

    strdup_callback ¶

    strdup_callback :: proc "c" (str: cstring) -> cstring
    Related Procedures With Parameters

    tlssessioninfo ¶

    tlssessioninfo :: struct {
    	backend:   sslbackend,
    	internals: rawptr,
    }
     

    Information about the SSL library used and the respective internal SSL handle, which can be used to obtain further information regarding the connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION.

    trailer_callback ¶

    trailer_callback :: proc "c" (list: ^^slist, userdata: rawptr) -> i32

    unlock_function ¶

    unlock_function :: proc "c" (handle: ^CURL, data: lock_data, userptr: rawptr)

    usessl ¶

    usessl :: enum i32 {
    }

    version_enum ¶

    version_enum :: enum i32 {
    	FIRST,    // 7.10
    	SECOND,   // 7.11.1
    	THIRD,    // 7.12.0
    	FOURTH,   // 7.16.1
    	FIFTH,    // 7.57.0
    	SIXTH,    // 7.66.0
    	SEVENTH,  // 7.70.0
    	EIGHTH,   // 7.72.0
    	NINTH,    // 7.75.0
    	TENTH,    // 7.77.0
    	ELEVENTH, // 7.87.0
    	TWELFTH,  // 8.8.0
    }
    Related Procedures With Parameters
    Related Constants

    version_info_data ¶

    version_info_data :: struct {
    	age:             version_enum,
    	// age of the returned struct 
    	version:         cstring,
    	// LIBCURL_VERSION 
    	version_num:     u32,
    	// LIBCURL_VERSION_NUM 
    	host:            cstring,
    	// OS/host/cpu/machine when configured 
    	features:        i32,
    	// bitmask, see defines below 
    	ssl_version:     cstring,
    	// human readable string 
    	ssl_version_num: i32,
    	// not used anymore, always 0 
    	libz_version:    cstring,
    	// protocols is terminated by an entry with a NULL protoname 
    	protocols:       [^]cstring,
    	// The fields below this were added in CURLVERSION_SECOND 
    	ares:            cstring,
    	ares_num:        i32,
    	// This field was added in CURLVERSION_THIRD 
    	libidn:          cstring,
    	// Same as '_libiconv_version' if built with HAVE_ICONV 
    	iconv_ver_num:   i32,
    	libssh_version:  cstring,
    	// These fields were added in CURLVERSION_FIFTH 
    	brotli_ver_num:  u32,
    	// Numeric Brotli version
    	// 	                          (MAJOR << 24) | (MINOR << 12) | PATCH 
    	brotli_version:  cstring,
    	// These fields were added in CURLVERSION_SIXTH 
    	nghttp2_ver_num: u32,
    	// Numeric nghttp2 version
    	// 	                           (MAJOR << 16) | (MINOR << 8) | PATCH 
    	nghttp2_version: cstring,
    	// human readable string. 
    	quic_version:    cstring,
    	// These fields were added in CURLVERSION_SEVENTH 
    	cainfo:          cstring,
    	// the built-in default CURLOPT_CAINFO, might
    	// 	                             be NULL 
    	capath:          cstring,
    	// These fields were added in CURLVERSION_EIGHTH 
    	zstd_ver_num:    u32,
    	// Numeric Zstd version
    	// 	                          (MAJOR << 24) | (MINOR << 12) | PATCH 
    	zstd_version:    cstring,
    	// These fields were added in CURLVERSION_NINTH 
    	hyper_version:   cstring,
    	// These fields were added in CURLVERSION_TENTH 
    	gsasl_version:   cstring,
    	// These fields were added in CURLVERSION_ELEVENTH 
    	// feature_names is terminated by an entry with a NULL feature name 
    	feature_names:   [^]cstring,
    	// These fields were added in CURLVERSION_TWELFTH 
    	rtmp_version:    cstring,
    }
    Related Procedures With Returns

    waitfd ¶

    waitfd :: struct {
    	fd:      socket_t,
    	events:  i16,
    	revents: i16,
    }
    Related Procedures With Parameters

    write_callback ¶

    write_callback :: proc "c" (buffer: [^]u8, size: uint, nitems: uint, outstream: rawptr) -> uint

    ws_flag ¶

    ws_flag :: enum u32 {
    	// flag bits 
    	TEXT   = 0, 
    	BINARY = 1, 
    	CONT   = 2, 
    	CLOSE  = 3, 
    	PING   = 4, 
    	OFFSET = 5, 
    	// flags for curl_ws_send() 
    	PONG   = 6, 
    }

    ws_flags ¶

    ws_flags :: distinct bit_set[ws_flag; u32]
    Related Procedures With Parameters
    Related Constants

    ws_frame ¶

    ws_frame :: struct {
    	age:       i32,
    	// zero 
    	flags:     ws_flags,
    	// See the CURLWS_* defines 
    	offset:    i64,
    	// the offset of this data into the frame 
    	bytesleft: i64,
    	// number of pending bytes left of the payload 
    	len:       uint,
    }
    Related Procedures With Returns

    xferinfo_callback ¶

    xferinfo_callback :: proc "c" (clientp: rawptr, dltotal: i64, dlnow: i64, ultotal: i64, ulnow: i64) -> i32
     

    This is the CURLOPT_XFERINFOFUNCTION callback prototype. It was introduced in 7.32.0, avoids the use of floating point numbers and provides more detailed information.

    Constants

    ALTSVC_H1 ¶

    ALTSVC_H1: int : 1 << 3

    ALTSVC_H2 ¶

    ALTSVC_H2: int : 1 << 4

    ALTSVC_H3 ¶

    ALTSVC_H3: int : 1 << 5

    ALTSVC_READONLYFILE ¶

    ALTSVC_READONLYFILE: int : 1 << 2
     

    CURLALTSVC_* are bits for the CURLOPT_ALTSVC_CTRL option

    AUTH_ANY ¶

    AUTH_ANY: u32 : ~AUTH_DIGEST_IE

    AUTH_ANYSAFE ¶

    AUTH_ANYSAFE: u32 : ~(AUTH_BASIC | AUTH_DIGEST_IE)

    AUTH_AWS_SIGV4 ¶

    AUTH_AWS_SIGV4: u32 : ((c.ulong)(1)) << 7

    AUTH_BASIC ¶

    AUTH_BASIC: u32 : ((c.ulong)(1)) << 0

    AUTH_BEARER ¶

    AUTH_BEARER: u32 : ((c.ulong)(1)) << 6

    AUTH_DIGEST ¶

    AUTH_DIGEST: u32 : ((c.ulong)(1)) << 1

    AUTH_DIGEST_IE ¶

    AUTH_DIGEST_IE: u32 : ((c.ulong)(1)) << 4

    AUTH_GSSAPI ¶

    AUTH_GSSAPI: u32 : AUTH_NEGOTIATE
     

    Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct

    AUTH_GSSNEGOTIATE ¶

    AUTH_GSSNEGOTIATE: u32 : AUTH_NEGOTIATE
     

    Deprecated since the advent of CURLAUTH_NEGOTIATE

    AUTH_NEGOTIATE ¶

    AUTH_NEGOTIATE: u32 : ((c.ulong)(1)) << 2

    AUTH_NONE ¶

    AUTH_NONE: u32 : (c.ulong)(0)

    AUTH_NTLM ¶

    AUTH_NTLM: u32 : ((c.ulong)(1)) << 3

    AUTH_ONLY ¶

    AUTH_ONLY: u32 : ((c.ulong)(1)) << 31

    BLOB_COPY ¶

    BLOB_COPY :: blob_flags{.COPY}
     

    Flag bits in the curl_blob struct:

    BLOB_NOCOPY ¶

    BLOB_NOCOPY :: blob_flags{}
     

    tell libcurl to NOT copy the data

    CHUNK_BGN_FUNC_FAIL ¶

    CHUNK_BGN_FUNC_FAIL: int : 1
     

    tell the lib to end the task

    CHUNK_BGN_FUNC_OK ¶

    CHUNK_BGN_FUNC_OK: int : 0
     

    return codes for CURLOPT_CHUNK_BGN_FUNCTION

    CHUNK_BGN_FUNC_SKIP ¶

    CHUNK_BGN_FUNC_SKIP: int : 2
     

    skip this chunk over

    CHUNK_END_FUNC_FAIL ¶

    CHUNK_END_FUNC_FAIL: int : 1
     

    tell the lib to end the task

    CHUNK_END_FUNC_OK ¶

    CHUNK_END_FUNC_OK: int : 0
     

    return codes for CURLOPT_CHUNK_END_FUNCTION

    COPYRIGHT: string : "Daniel Stenberg, <daniel@haxx.se>."
     

    This is the global package copyright

    CSELECT_ERR ¶

    CSELECT_ERR: int : 0x04

    CSELECT_IN ¶

    CSELECT_IN: int : 0x01

    CSELECT_OUT ¶

    CSELECT_OUT: int : 0x02

    ERROR_SIZE ¶

    ERROR_SIZE: int : 256

    FINFOFLAG_KNOWN_FILENAME ¶

    FINFOFLAG_KNOWN_FILENAME :: finfoflags{.KNOWN_FILENAME}

    FINFOFLAG_KNOWN_FILETYPE ¶

    FINFOFLAG_KNOWN_FILETYPE :: finfoflags{.KNOWN_FILETYPE}

    FINFOFLAG_KNOWN_GID ¶

    FINFOFLAG_KNOWN_GID :: finfoflags{.KNOWN_GID}

    FINFOFLAG_KNOWN_HLINKCOUNT ¶

    FINFOFLAG_KNOWN_HLINKCOUNT :: finfoflags{.KNOWN_HLINKCOUNT}

    FINFOFLAG_KNOWN_PERM ¶

    FINFOFLAG_KNOWN_PERM :: finfoflags{.KNOWN_PERM}

    FINFOFLAG_KNOWN_SIZE ¶

    FINFOFLAG_KNOWN_SIZE :: finfoflags{.KNOWN_SIZE}

    FINFOFLAG_KNOWN_TIME ¶

    FINFOFLAG_KNOWN_TIME :: finfoflags{.KNOWN_TIME}

    FINFOFLAG_KNOWN_UID ¶

    FINFOFLAG_KNOWN_UID :: finfoflags{.KNOWN_UID}

    FNMATCHFUNC_FAIL ¶

    FNMATCHFUNC_FAIL: int : 2
     

    an error occurred

    FNMATCHFUNC_MATCH ¶

    FNMATCHFUNC_MATCH: int : 0
     

    return codes for FNMATCHFUNCTION

    FNMATCHFUNC_NOMATCH ¶

    FNMATCHFUNC_NOMATCH: int : 1
     

    pattern does not match the string

    FOLLOW_ALL ¶

    FOLLOW_ALL: int : 1
     

    bits for the CURLOPT_FOLLOWLOCATION option

    FOLLOW_FIRSTONLY ¶

    FOLLOW_FIRSTONLY: int : 3
     

    Only use the custom method in the first request, always reset in the next

    FOLLOW_OBEYCODE ¶

    FOLLOW_OBEYCODE: int : 2
     

    Do not use the custom method in the follow-up request if the HTTP code instructs so (301, 302, 303).

    GLOBAL_ACK_EINTR ¶

    GLOBAL_ACK_EINTR: int : 1 << 2

    GLOBAL_ALL ¶

    GLOBAL_ALL: int : GLOBAL_SSL | GLOBAL_WIN32

    GLOBAL_DEFAULT ¶

    GLOBAL_DEFAULT: int : GLOBAL_ALL

    GLOBAL_NOTHING ¶

    GLOBAL_NOTHING: int : 0

    GLOBAL_SSL ¶

    GLOBAL_SSL: int : 1 << 0
     

    no purpose since 7.57.0

    GLOBAL_WIN32 ¶

    GLOBAL_WIN32: int : 1 << 1

    GSSAPI_DELEGATION_FLAG ¶

    GSSAPI_DELEGATION_FLAG: int : 1 << 1
     

    delegate always

    GSSAPI_DELEGATION_NONE ¶

    GSSAPI_DELEGATION_NONE: int : 0
     

    no delegation (default)

    GSSAPI_DELEGATION_POLICY_FLAG ¶

    GSSAPI_DELEGATION_POLICY_FLAG: int : 1 << 0
     

    if permitted by policy

    HEADER_SEPARATE ¶

    HEADER_SEPARATE: int : 1 << 0

    HEADER_UNIFIED ¶

    HEADER_UNIFIED: int : 0
     

    bitmask defines for CURLOPT_HEADEROPT

    HET_DEFAULT ¶

    HET_DEFAULT: int : 200
     

    The default connection attempt delay in milliseconds for happy eyeballs. CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document this value, keep them in sync.

    HSTS_ENABLE ¶

    HSTS_ENABLE: i32 : (c.long)(1 << 0)
     

    CURLHSTS_* are bits for the CURLOPT_HSTS option

    HSTS_READONLYFILE ¶

    HSTS_READONLYFILE: i32 : (c.long)(1 << 1)

    HTTPPOST_BUFFER ¶

    HTTPPOST_BUFFER :: httppost_flags{.BUFFER}

    HTTPPOST_CALLBACK ¶

    HTTPPOST_CALLBACK :: httppost_flags{.CALLBACK}

    HTTPPOST_FILENAME ¶

    HTTPPOST_FILENAME :: httppost_flags{.FILENAME}

    HTTPPOST_LARGE ¶

    HTTPPOST_LARGE :: httppost_flags{.LARGE}

    HTTPPOST_PTRBUFFER ¶

    HTTPPOST_PTRBUFFER :: httppost_flags{.PTRBUFFER}

    HTTPPOST_PTRCONTENTS ¶

    HTTPPOST_PTRCONTENTS :: httppost_flags{.PTRCONTENTS}

    HTTPPOST_PTRNAME ¶

    HTTPPOST_PTRNAME :: httppost_flags{.PTRNAME}

    HTTPPOST_READFILE ¶

    HTTPPOST_READFILE :: httppost_flags{.READFILE}

    HTTP_VERSION_1_0 ¶

    HTTP_VERSION_1_0: int : 1
     

    please use HTTP 1.0 in the request

    HTTP_VERSION_1_1 ¶

    HTTP_VERSION_1_1: int : 2
     

    please use HTTP 1.1 in the request

    HTTP_VERSION_2 ¶

    HTTP_VERSION_2: int : HTTP_VERSION_2_0
     

    Convenience definition simple because the name of the version is HTTP/2 and not 2.0. The 2_0 version of the enum name was set while the version was still planned to be 2.0 and we stick to it for compatibility.

    HTTP_VERSION_2TLS ¶

    HTTP_VERSION_2TLS: int : 4
     

    use version 2 for HTTPS, version 1.1 for HTTP

    HTTP_VERSION_2_0 ¶

    HTTP_VERSION_2_0: int : 3
     

    please use HTTP 2 in the request

    HTTP_VERSION_2_PRIOR_KNOWLEDGE ¶

    HTTP_VERSION_2_PRIOR_KNOWLEDGE: int : 5
     

    please use HTTP 2 without HTTP/1.1 Upgrade

    HTTP_VERSION_3 ¶

    HTTP_VERSION_3: int : 30
     

    Use HTTP/3, fallback to HTTP/2 or HTTP/1 if needed. For HTTPS only. For HTTP, this option makes libcurl return error.

    HTTP_VERSION_3ONLY ¶

    HTTP_VERSION_3ONLY: int : 31
     

    Use HTTP/3 without fallback. For HTTPS only. For HTTP, this makes libcurl return error.

    HTTP_VERSION_LAST ¶

    HTTP_VERSION_LAST: int : 32
     

    ILLEGAL http version

    HTTP_VERSION_NONE ¶

    HTTP_VERSION_NONE: int : 0
     

    These constants are for use with the CURLOPT_HTTP_VERSION option.

    H_1XX ¶

    H_1XX :: header_origin_bits{.H_1XX}
     

    1xx headers

    H_CONNECT ¶

    H_CONNECT :: header_origin_bits{.H_CONNECT}
     

    CONNECT headers

    H_HEADER ¶

    H_HEADER :: header_origin_bits{.H_HEADER}
     

    plain server header

    H_PSEUDO ¶

    H_PSEUDO :: header_origin_bits{.H_PSEUDO}
     

    pseudo headers

    H_TRAILER ¶

    H_TRAILER :: header_origin_bits{.H_TRAILER}
     

    trailers

    INFO_DOUBLE ¶

    INFO_DOUBLE: int : 0x300000

    INFO_LONG ¶

    INFO_LONG: int : 0x200000

    INFO_MASK ¶

    INFO_MASK: int : 0x0fffff

    INFO_OFF_T ¶

    INFO_OFF_T: int : 0x600000

    INFO_PTR ¶

    INFO_PTR: int : 0x400000
     

    same as SLIST

    INFO_SLIST ¶

    INFO_SLIST: int : 0x400000

    INFO_SOCKET ¶

    INFO_SOCKET: int : 0x500000

    INFO_STRING ¶

    INFO_STRING: int : 0x100000

    INFO_TYPEMASK ¶

    INFO_TYPEMASK: int : 0xf00000

    IPRESOLVE_V4 ¶

    IPRESOLVE_V4: int : 1
     

    uses only IPv4 addresses/connections

    IPRESOLVE_V6 ¶

    IPRESOLVE_V6: int : 2
     

    uses only IPv6 addresses/connections

    IPRESOLVE_WHATEVER ¶

    IPRESOLVE_WHATEVER: int : 0
     
    Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
    

    name resolves addresses using more than one IP protocol version, this option might be handy to force libcurl to use a specific IP version.

    MAX_HTTP_HEADER ¶

    MAX_HTTP_HEADER: int : 100 * 1024
     

    The only reason to have a max limit for this is to avoid the risk of a bad server feeding libcurl with a never-ending header that will cause reallocs infinitely

    MAX_READ_SIZE ¶

    MAX_READ_SIZE: int : 10 * 1024 * 1024
     

    The maximum receive buffer size.

    MAX_WRITE_SIZE ¶

    MAX_WRITE_SIZE: int : 16384
     

    Tests have proven that 20K is a bad buffer size for uploads on Windows, while 16K for some odd reason performed a lot better. We do the ifndef check to allow this value to easier be changed at build time for those who feel adventurous. The practical minimum is about 400 bytes since libcurl uses a buffer of this size as a scratch area (unrelated to network send operations).

    MIMEOPT_FORMESCAPE ¶

    MIMEOPT_FORMESCAPE: int : 1 << 0
     

    CURLMIMEOPT_ defines are for the CURLOPT_MIME_OPTIONS option.

    MNWC_CLEAR_CONNS ¶

    MNWC_CLEAR_CONNS: int : 1 << 0
     

    CURLMNWC_CLEAR_CONNS tells libcurl to prevent further reuse of existing connections. Connections that are idle will be closed. Ongoing transfers will continue with the connection they have.

    MNWC_CLEAR_DNS ¶

    MNWC_CLEAR_DNS: int : 1 << 0
     

    CURLMNWC_CLEAR_DNS tells libcurl to prevent further reuse of existing connections. Connections that are idle will be closed. Ongoing transfers will continue with the connection they have.

    NETRC_IGNORED ¶

    NETRC_IGNORED: int : 0
     

    These enums are for use with the CURLOPT_NETRC option.

    NETRC_OPTIONAL ¶

    NETRC_OPTIONAL: int : 1
     

    A user:password in the URL will be preferred to one in the .netrc.

    NETRC_REQUIRED ¶

    NETRC_REQUIRED: int : 2
     

    A user:password in the URL will be ignored. Unless one is set programmatically, the .netrc will be queried.

    OPTTYPE_BLOB ¶

    OPTTYPE_BLOB: int : 40000

    OPTTYPE_CBPOINT ¶

    OPTTYPE_CBPOINT: int : OPTTYPE_OBJECTPOINT
     

    'void *' argument passed untouched to callback

    OPTTYPE_FUNCTIONPOINT ¶

    OPTTYPE_FUNCTIONPOINT: int : 20000

    OPTTYPE_LONG ¶

    OPTTYPE_LONG: int : 0
     

    long may be 32 or 64 bits, but we should never depend on anything else but 32

    OPTTYPE_OBJECTPOINT ¶

    OPTTYPE_OBJECTPOINT: int : 10000

    OPTTYPE_OFF_T ¶

    OPTTYPE_OFF_T: int : 30000

    OPTTYPE_SLISTPOINT ¶

    OPTTYPE_SLISTPOINT: int : OPTTYPE_OBJECTPOINT
     

    'struct curl_slist *' argument

    OPTTYPE_STRINGPOINT ¶

    OPTTYPE_STRINGPOINT: int : OPTTYPE_OBJECTPOINT
     

    'char *' argument to a string with a trailing zero

    OPTTYPE_VALUES ¶

    OPTTYPE_VALUES: int : OPTTYPE_LONG
     

    'long' argument with a set of values/bitmask

    PAUSE_ALL ¶

    PAUSE_ALL: int : PAUSE_RECV | PAUSE_SEND

    PAUSE_CONT ¶

    PAUSE_CONT: int : PAUSE_RECV_CONT | PAUSE_SEND_CONT

    PAUSE_RECV ¶

    PAUSE_RECV: int : 1 << 0

    PAUSE_RECV_CONT ¶

    PAUSE_RECV_CONT: int : 0

    PAUSE_SEND ¶

    PAUSE_SEND: int : 1 << 2

    PAUSE_SEND_CONT ¶

    PAUSE_SEND_CONT: int : 0

    PIPE_HTTP1 ¶

    PIPE_HTTP1: int : 1

    PIPE_MULTIPLEX ¶

    PIPE_MULTIPLEX: int : 2

    PIPE_NOTHING ¶

    PIPE_NOTHING: int : 0
     

    bitmask bits for CURLMOPT_PIPELINING

    POLL_IN ¶

    POLL_IN: int : 1

    POLL_INOUT ¶

    POLL_INOUT: int : 3

    POLL_NONE ¶

    POLL_NONE: int : 0
     

    * Name: curl_multi_socket() and * curl_multi_socket_all() * * Desc: An alternative version of curl_multi_perform() that allows the * application to pass in one of the file descriptors that have been * detected to have "action" on them and let libcurl perform. * See manpage for details.

    POLL_OUT ¶

    POLL_OUT: int : 2

    POLL_REMOVE ¶

    POLL_REMOVE: int : 4

    PREREQFUNC_ABORT ¶

    PREREQFUNC_ABORT: int : 1
     

    Return code for when the pre-request callback wants to abort the request

    PREREQFUNC_OK ¶

    PREREQFUNC_OK: int : 0
     

    Return code for when the pre-request callback has terminated without any errors

    PROGRESSFUNC_CONTINUE ¶

    PROGRESSFUNC_CONTINUE: int : 0x10000001
     

    This is a return code for the progress callback that, when returned, will signal libcurl to continue executing the default progress function

    PROTO_ALL ¶

    PROTO_ALL: i32 : ~c.int(0)
     

    enable everything

    PROTO_DICT ¶

    PROTO_DICT: int : 1 << 9

    PROTO_FILE ¶

    PROTO_FILE: int : 1 << 10

    PROTO_FTP ¶

    PROTO_FTP: int : 1 << 2

    PROTO_FTPS ¶

    PROTO_FTPS: int : 1 << 3

    PROTO_GOPHER ¶

    PROTO_GOPHER: int : 1 << 25

    PROTO_GOPHERS ¶

    PROTO_GOPHERS: int : 1 << 29

    PROTO_HTTP ¶

    PROTO_HTTP: int : 1 << 0

    PROTO_HTTPS ¶

    PROTO_HTTPS: int : 1 << 1

    PROTO_IMAP ¶

    PROTO_IMAP: int : 1 << 12

    PROTO_IMAPS ¶

    PROTO_IMAPS: int : 1 << 13

    PROTO_LDAP ¶

    PROTO_LDAP: int : 1 << 7

    PROTO_LDAPS ¶

    PROTO_LDAPS: int : 1 << 8

    PROTO_MQTT ¶

    PROTO_MQTT: int : 1 << 28

    PROTO_POP3 ¶

    PROTO_POP3: int : 1 << 14

    PROTO_POP3S ¶

    PROTO_POP3S: int : 1 << 15

    PROTO_RTMP ¶

    PROTO_RTMP: int : 1 << 19

    PROTO_RTMPE ¶

    PROTO_RTMPE: int : 1 << 21

    PROTO_RTMPS ¶

    PROTO_RTMPS: int : 1 << 23

    PROTO_RTMPT ¶

    PROTO_RTMPT: int : 1 << 20

    PROTO_RTMPTE ¶

    PROTO_RTMPTE: int : 1 << 22

    PROTO_RTMPTS ¶

    PROTO_RTMPTS: int : 1 << 24

    PROTO_RTSP ¶

    PROTO_RTSP: int : 1 << 18

    PROTO_SCP ¶

    PROTO_SCP: int : 1 << 4

    PROTO_SFTP ¶

    PROTO_SFTP: int : 1 << 5

    PROTO_SMB ¶

    PROTO_SMB: int : 1 << 26

    PROTO_SMBS ¶

    PROTO_SMBS: int : 1 << 27

    PROTO_SMTP ¶

    PROTO_SMTP: int : 1 << 16

    PROTO_SMTPS ¶

    PROTO_SMTPS: int : 1 << 17

    PROTO_TELNET ¶

    PROTO_TELNET: int : 1 << 6

    PROTO_TFTP ¶

    PROTO_TFTP: int : 1 << 11

    PT_RTSPHEADER ¶

    PT_RTSPHEADER :: option.HTTPHEADER
     

    Convenient "aliases"

    PUSH_DENY ¶

    PUSH_DENY: int : 1

    PUSH_ERROROUT ¶

    PUSH_ERROROUT: int : 2
     

    added in 7.72.0

    PUSH_OK ¶

    PUSH_OK: int : 0
     

    * Name: curl_push_callback * * Desc: This callback gets called when a new stream is being pushed by the * server. It approves or denies the new stream. It can also decide * to completely fail the connection. * * Returns: CURL_PUSH_OK, CURL_PUSH_DENY or CURL_PUSH_ERROROUT

    READFUNC_ABORT ¶

    READFUNC_ABORT: int : 0x10000000
     

    This is a return code for the read callback that, when returned, will signal libcurl to immediately abort the current transfer.

    READFUNC_PAUSE ¶

    READFUNC_PAUSE: int : 0x10000001
     

    This is a return code for the read callback that, when returned, will signal libcurl to pause sending data on the current transfer.

    REDIR_GET_ALL ¶

    REDIR_GET_ALL: int : 0

    REDIR_POST_301 ¶

    REDIR_POST_301: int : 1

    REDIR_POST_302 ¶

    REDIR_POST_302: int : 2

    REDIR_POST_303 ¶

    REDIR_POST_303: int : 4

    REDIR_POST_ALL ¶

    REDIR_POST_ALL: int : REDIR_POST_301 | REDIR_POST_302 | REDIR_POST_303

    RTSPREQ_ANNOUNCE ¶

    RTSPREQ_ANNOUNCE: int : 3

    RTSPREQ_DESCRIBE ¶

    RTSPREQ_DESCRIBE: int : 2

    RTSPREQ_GET_PARAMETER ¶

    RTSPREQ_GET_PARAMETER: int : 8

    RTSPREQ_LAST ¶

    RTSPREQ_LAST: int : 12
     

    not used

    RTSPREQ_NONE ¶

    RTSPREQ_NONE: int : 0

    RTSPREQ_OPTIONS ¶

    RTSPREQ_OPTIONS: int : 1

    RTSPREQ_PAUSE ¶

    RTSPREQ_PAUSE: int : 6

    RTSPREQ_PLAY ¶

    RTSPREQ_PLAY: int : 5

    RTSPREQ_RECEIVE ¶

    RTSPREQ_RECEIVE: int : 11

    RTSPREQ_RECORD ¶

    RTSPREQ_RECORD: int : 10

    RTSPREQ_SETUP ¶

    RTSPREQ_SETUP: int : 4

    RTSPREQ_SET_PARAMETER ¶

    RTSPREQ_SET_PARAMETER: int : 9

    RTSPREQ_TEARDOWN ¶

    RTSPREQ_TEARDOWN: int : 7

    SEEKFUNC_CANTSEEK ¶

    SEEKFUNC_CANTSEEK: int : 2
     

    tell libcurl seeking cannot be done, so libcurl might try other means instead

    SEEKFUNC_FAIL ¶

    SEEKFUNC_FAIL: int : 1
     

    fail the entire transfer

    SEEKFUNC_OK ¶

    SEEKFUNC_OK: int : 0
     

    These are the return codes for the seek callbacks

    SOCKET_BAD ¶

    SOCKET_BAD :: socket_t(-1)

    SOCKET_TIMEOUT ¶

    SOCKET_TIMEOUT: socket_t : SOCKET_BAD

    SOCKOPT_ALREADY_CONNECTED ¶

    SOCKOPT_ALREADY_CONNECTED: int : 2

    SOCKOPT_ERROR ¶

    SOCKOPT_ERROR: int : 1
     

    causes libcurl to abort and return CURLE_ABORTED_BY_CALLBACK

    SOCKOPT_OK ¶

    SOCKOPT_OK: int : 0
     

    The return code from the sockopt_callback can signal information back to libcurl:

    SSH_AUTH_AGENT ¶

    SSH_AUTH_AGENT: int : 1 << 4
     

    agent (ssh-agent, pageant...)

    SSH_AUTH_ANY ¶

    SSH_AUTH_ANY: i32 : ~c.int(0)
     

    all types supported by the server

    SSH_AUTH_DEFAULT ¶

    SSH_AUTH_DEFAULT: i32 : SSH_AUTH_ANY

    SSH_AUTH_GSSAPI ¶

    SSH_AUTH_GSSAPI: int : 1 << 5
     

    gssapi (kerberos, ...)

    SSH_AUTH_HOST ¶

    SSH_AUTH_HOST: int : 1 << 2
     

    host key files

    SSH_AUTH_KEYBOARD ¶

    SSH_AUTH_KEYBOARD: int : 1 << 3
     

    keyboard interactive

    SSH_AUTH_NONE ¶

    SSH_AUTH_NONE: int : 0
     

    none allowed, silly but complete

    SSH_AUTH_PASSWORD ¶

    SSH_AUTH_PASSWORD: int : 1 << 1
     

    password

    SSH_AUTH_PUBLICKEY ¶

    SSH_AUTH_PUBLICKEY: int : 1 << 0
     

    public/private key files

    SSLOPT_ALLOW_BEAST ¶

    SSLOPT_ALLOW_BEAST: int : 1 << 0
     

    ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the name of improving interoperability with older servers. Some SSL libraries have introduced work-arounds for this flaw but those work-arounds sometimes make the SSL communication fail. To regain functionality with those broken servers, a user can this way allow the vulnerability back.

    SSLOPT_AUTO_CLIENT_CERT ¶

    SSLOPT_AUTO_CLIENT_CERT: int : 1 << 5
     

    CURLSSLOPT_AUTO_CLIENT_CERT tells libcurl to automatically locate and use a client certificate for authentication. (Schannel)

    SSLOPT_EARLYDATA ¶

    SSLOPT_EARLYDATA: int : 1 << 6
     

    If possible, send data using TLS 1.3 early data

    SSLOPT_NATIVE_CA ¶

    SSLOPT_NATIVE_CA: int : 1 << 4
     

    CURLSSLOPT_NATIVE_CA tells libcurl to use standard certificate store of operating system. Currently implemented under MS-Windows.

    SSLOPT_NO_PARTIALCHAIN ¶

    SSLOPT_NO_PARTIALCHAIN: int : 1 << 2
     

    NO_PARTIALCHAIN tells libcurl to NOT accept a partial certificate chain if possible. The OpenSSL backend has this ability.

    SSLOPT_NO_REVOKE ¶

    SSLOPT_NO_REVOKE: int : 1 << 1
     

    NO_REVOKE tells libcurl to disable certificate revocation checks for those SSL backends where such behavior is present.

    SSLOPT_REVOKE_BEST_EFFORT ¶

    SSLOPT_REVOKE_BEST_EFFORT: int : 1 << 3
     

    REVOKE_BEST_EFFORT tells libcurl to ignore certificate revocation offline checks and ignore missing revocation list for those SSL backends where such behavior is present.

    SSLVERSION_DEFAULT ¶

    SSLVERSION_DEFAULT: int : 0

    SSLVERSION_LAST ¶

    SSLVERSION_LAST: int : 8
     

    never use, keep last

    SSLVERSION_MAX_DEFAULT ¶

    SSLVERSION_MAX_DEFAULT: int : SSLVERSION_TLSv1 << 16

    SSLVERSION_MAX_LAST ¶

    SSLVERSION_MAX_LAST: int : SSLVERSION_LAST << 16
     

    never use, keep last

    SSLVERSION_MAX_NONE ¶

    SSLVERSION_MAX_NONE: int : 0

    SSLVERSION_MAX_TLSv1_0 ¶

    SSLVERSION_MAX_TLSv1_0: int : SSLVERSION_TLSv1_0 << 16

    SSLVERSION_MAX_TLSv1_1 ¶

    SSLVERSION_MAX_TLSv1_1: int : SSLVERSION_TLSv1_1 << 16

    SSLVERSION_MAX_TLSv1_2 ¶

    SSLVERSION_MAX_TLSv1_2: int : SSLVERSION_TLSv1_2 << 16

    SSLVERSION_MAX_TLSv1_3 ¶

    SSLVERSION_MAX_TLSv1_3: int : SSLVERSION_TLSv1_3 << 16

    SSLVERSION_SSLv2 ¶

    SSLVERSION_SSLv2: int : 2

    SSLVERSION_SSLv3 ¶

    SSLVERSION_SSLv3: int : 3

    SSLVERSION_TLSv1 ¶

    SSLVERSION_TLSv1: int : 1
     

    TLS 1.x

    SSLVERSION_TLSv1_0 ¶

    SSLVERSION_TLSv1_0: int : 4

    SSLVERSION_TLSv1_1 ¶

    SSLVERSION_TLSv1_1: int : 5

    SSLVERSION_TLSv1_2 ¶

    SSLVERSION_TLSv1_2: int : 6

    SSLVERSION_TLSv1_3 ¶

    SSLVERSION_TLSv1_3: int : 7

    TIMECOND_IFMODSINCE ¶

    TIMECOND_IFMODSINCE: int : 1

    TIMECOND_IFUNMODSINCE ¶

    TIMECOND_IFUNMODSINCE: int : 2

    TIMECOND_LASTMOD ¶

    TIMECOND_LASTMOD: int : 3

    TIMECOND_NONE ¶

    TIMECOND_NONE: int : 0

    TIMESTAMP ¶

    TIMESTAMP: string : "2025-11-05"
     

    * This is the date and time when the full source package was created. The * timestamp is not stored in git, as the timestamp is properly set in the * tarballs by the maketgz script. * * The format of the date follows this template: * * "2007-11-23"

    TLSAUTH_NONE ¶

    TLSAUTH_NONE: int : 0

    TLSAUTH_SRP ¶

    TLSAUTH_SRP: int : 1

    TRAILERFUNC_ABORT ¶

    TRAILERFUNC_ABORT: int : 1
     

    Return code for when was an error in the trailing header's list and we want to abort the request

    TRAILERFUNC_OK ¶

    TRAILERFUNC_OK: int : 0
     

    Return code for when the trailing headers' callback has terminated without any errors

    ULFLAG_ANSWERED ¶

    ULFLAG_ANSWERED: int : 1 << 0
     

    bitmask values for CURLOPT_UPLOAD_FLAGS

    ULFLAG_DELETED ¶

    ULFLAG_DELETED: int : 1 << 1

    ULFLAG_DRAFT ¶

    ULFLAG_DRAFT: int : 1 << 2

    ULFLAG_FLAGGED ¶

    ULFLAG_FLAGGED: int : 1 << 3

    ULFLAG_SEEN ¶

    ULFLAG_SEEN: int : 1 << 4

    UPKEEP_INTERVAL_DEFAULT ¶

    UPKEEP_INTERVAL_DEFAULT: int : 60000
     

    The default connection upkeep interval in milliseconds.

    USESSL_ALL ¶

    USESSL_ALL: int : 3
     

    SSL for all communication or fail

    USESSL_CONTROL ¶

    USESSL_CONTROL: int : 2
     

    SSL for the control connection or fail

    USESSL_NONE ¶

    USESSL_NONE: int : 0
     

    parameter for the CURLOPT_USE_SSL option

    USESSL_TRY ¶

    USESSL_TRY: int : 1
     

    try using SSL, proceed anyway otherwise

    U_ALLOW_SPACE ¶

    U_ALLOW_SPACE :: UFlags{.ALLOW_SPACE}

    U_APPENDQUERY ¶

    U_APPENDQUERY :: UFlags{.APPENDQUERY}

    U_DEFAULT_PORT ¶

    U_DEFAULT_PORT :: UFlags{.DEFAULT_PORT}

    U_DEFAULT_SCHEME ¶

    U_DEFAULT_SCHEME :: UFlags{.DEFAULT_SCHEME}

    U_DISALLOW_USER ¶

    U_DISALLOW_USER :: UFlags{.DISALLOW_USER}

    U_GET_EMPTY ¶

    U_GET_EMPTY :: UFlags{.GET_EMPTY}

    U_GUESS_SCHEME ¶

    U_GUESS_SCHEME :: UFlags{.GUESS_SCHEME}

    U_NON_SUPPORT_SCHEME ¶

    U_NON_SUPPORT_SCHEME :: UFlags{.NON_SUPPORT_SCHEME}

    U_NO_AUTHORITY ¶

    U_NO_AUTHORITY :: UFlags{.NO_AUTHORITY}

    U_NO_DEFAULT_PORT ¶

    U_NO_DEFAULT_PORT :: UFlags{.NO_DEFAULT_PORT}

    U_NO_GUESS_SCHEME ¶

    U_NO_GUESS_SCHEME :: UFlags{.NO_GUESS_SCHEME}

    U_PATH_AS_IS ¶

    U_PATH_AS_IS :: UFlags{.PATH_AS_IS}

    U_PUNY2IDN ¶

    U_PUNY2IDN :: UFlags{.PUNY2IDN}

    U_PUNYCODE ¶

    U_PUNYCODE :: UFlags{.PUNYCODE}

    U_URLDECODE ¶

    U_URLDECODE :: UFlags{.URLDECODE}

    U_URLENCODE ¶

    U_URLENCODE :: UFlags{.URLENCODE}

    VERSION ¶

    VERSION: string : "8.17.0"
     

    This is the version number of the libcurl package from which this header file origins:

    VERSION_ALTSVC ¶

    VERSION_ALTSVC: int : 1 << 24
     

    Alt-Svc handling built-in

    VERSION_ASYNCHDNS ¶

    VERSION_ASYNCHDNS: int : 1 << 7
     

    Asynchronous DNS resolves

    VERSION_BROTLI ¶

    VERSION_BROTLI: int : 1 << 23
     

    Brotli features are present.

    VERSION_CONV ¶

    VERSION_CONV: int : 1 << 12
     

    Character conversions supported

    VERSION_CURLDEBUG ¶

    VERSION_CURLDEBUG: int : 1 << 13
     

    Debug memory tracking supported

    VERSION_DEBUG ¶

    VERSION_DEBUG: int : 1 << 6
     

    Built with debug capabilities

    VERSION_GSASL ¶

    VERSION_GSASL: int : 1 << 29
     

    libgsasl is supported

    VERSION_GSSAPI ¶

    VERSION_GSSAPI: int : 1 << 17
     

    Built against a GSS-API library

    VERSION_GSSNEGOTIATE ¶

    VERSION_GSSNEGOTIATE: int : 1 << 5
     

    Negotiate auth is supported (deprecated)

    VERSION_HSTS ¶

    VERSION_HSTS: int : 1 << 28
     

    HSTS is supported

    VERSION_HTTP2 ¶

    VERSION_HTTP2: int : 1 << 16
     

    HTTP2 support built-in

    VERSION_HTTP3 ¶

    VERSION_HTTP3: int : 1 << 25
     

    HTTP3 support built-in

    VERSION_HTTPS_PROXY ¶

    VERSION_HTTPS_PROXY: int : 1 << 21
     

    HTTPS-proxy support built-in

    VERSION_IDN ¶

    VERSION_IDN: int : 1 << 10
     

    Internationized Domain Names are supported

    VERSION_IPV6 ¶

    VERSION_IPV6: int : 1 << 0
     

    IPv6-enabled

    VERSION_KERBEROS4 ¶

    VERSION_KERBEROS4: int : 1 << 1
     

    Kerberos V4 auth is supported (deprecated)

    VERSION_KERBEROS5 ¶

    VERSION_KERBEROS5: int : 1 << 18
     

    Kerberos V5 auth is supported

    VERSION_LARGEFILE ¶

    VERSION_LARGEFILE: int : 1 << 9
     

    Supports files larger than 2GB

    VERSION_LIBZ ¶

    VERSION_LIBZ: int : 1 << 3
     

    libz features are present

    VERSION_MAJOR ¶

    VERSION_MAJOR: int : 8
     

    The numeric version number is also available "in parts" by using these defines:

    VERSION_MINOR ¶

    VERSION_MINOR: int : 17

    VERSION_MULTI_SSL ¶

    VERSION_MULTI_SSL: int : 1 << 22
     

    Multiple SSL backends available

    VERSION_NOW ¶

    VERSION_NOW :: version_enum.TWELFTH
     

    The 'CURLVERSION_NOW' is the symbolic name meant to be used by basically all programs ever that want to get version information. It is meant to be a built-in version number for what kind of struct the caller expects. If the struct ever changes, we redefine the NOW to another enum from above.

    VERSION_NTLM ¶

    VERSION_NTLM: int : 1 << 4
     

    NTLM auth is supported

    VERSION_NTLM_WB ¶

    VERSION_NTLM_WB: int : 1 << 15
     

    NTLM delegation to winbind helper is supported

    VERSION_NUM ¶

    VERSION_NUM: int : 0x081100
     

    This is the numeric version of the libcurl version number, meant for easier parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will always follow this syntax:

    0xXXYYZZ
    
    

    Where XX, YY and ZZ are the main version, release and patch numbers in hexadecimal (using 8 bits each). All three numbers are always represented using two digits. 1.2 would appear as "0x010200" while version 9.11.7 appears as "0x090b07".

    This 6-digit (24 bits) hexadecimal number does not show pre-release number, and it is always a greater number in a more recent release. It makes comparisons with greater than and less than work.

    Note: This define is the full hex number and _does not_ use the CURL_VERSION_BITS() macro since curl's own configure script greps for it and needs it to contain the full number.

    VERSION_PATCH ¶

    VERSION_PATCH: int : 0

    VERSION_PSL ¶

    VERSION_PSL: int : 1 << 20
     

    Mozilla's Public Suffix List, used for cookie domain verification

    VERSION_SPNEGO ¶

    VERSION_SPNEGO: int : 1 << 8
     

    SPNEGO auth is supported

    VERSION_SSL ¶

    VERSION_SSL: int : 1 << 2
     

    SSL options are present

    VERSION_SSPI ¶

    VERSION_SSPI: int : 1 << 11
     

    Built against Windows SSPI

    VERSION_THREADSAFE ¶

    VERSION_THREADSAFE: int : 1 << 30
     

    libcurl API is thread-safe

    VERSION_TLSAUTH_SRP ¶

    VERSION_TLSAUTH_SRP: int : 1 << 14
     

    TLS-SRP auth is supported

    VERSION_UNICODE ¶

    VERSION_UNICODE: int : 1 << 27
     

    Unicode support on Windows

    VERSION_UNIX_SOCKETS ¶

    VERSION_UNIX_SOCKETS: int : 1 << 19
     

    Unix domain sockets support

    VERSION_ZSTD ¶

    VERSION_ZSTD: int : 1 << 26
     

    zstd features are present

    WAIT_POLLIN ¶

    WAIT_POLLIN: int : 0x0001
     

    Based on poll(2) structure and values. We do not use pollfd and POLL constants explicitly * to cover platforms without poll().

    WAIT_POLLOUT ¶

    WAIT_POLLOUT: int : 0x0004

    WAIT_POLLPRI ¶

    WAIT_POLLPRI: int : 0x0002

    WRITEFUNC_ERROR ¶

    WRITEFUNC_ERROR: int : 0xFFFFFFFF
     

    This is a magic return code for the write callback that, when returned, will signal an error from the callback.

    WRITEFUNC_PAUSE ¶

    WRITEFUNC_PAUSE: int : 0x10000001
     

    This is a magic return code for the write callback that, when returned, will signal libcurl to pause receiving on the current transfer.

    WS_BINARY ¶

    WS_BINARY :: ws_flags{.BINARY}

    WS_CLOSE ¶

    WS_CLOSE :: ws_flags{.CLOSE}

    WS_CONT ¶

    WS_CONT :: ws_flags{.CONT}

    WS_NOAUTOPONG ¶

    WS_NOAUTOPONG: int : 1 << 1

    WS_OFFSET ¶

    WS_OFFSET :: ws_flags{.OFFSET}

    WS_PING ¶

    WS_PING :: ws_flags{.PING}

    WS_PONG ¶

    WS_PONG :: ws_flags{.PONG}

    WS_RAW_MODE ¶

    WS_RAW_MODE: int : 1 << 0
     

    bits for the CURLOPT_WS_OPTIONS bitmask:

    WS_TEXT ¶

    WS_TEXT :: ws_flags{.TEXT}

    ZERO_TERMINATED ¶

    ZERO_TERMINATED: uint : ~c.size_t(0)
     

    Special size_t value signaling a null-terminated string.

    Variables

    This section is empty.

    Procedures

    easy_cleanup ¶

    easy_cleanup :: proc "c" (curl: ^CURL) ---

    easy_duphandle ¶

    easy_duphandle :: proc "c" (curl: ^CURL) -> ^CURL ---
     

    * NAME curl_easy_duphandle() * * DESCRIPTION * * Creates a new curl session handle with the same options set for the handle * passed in. Duplicating a handle could only be a matter of cloning data and * options, internal state info and things like persistent connections cannot * be transferred. It is useful in multithreaded applications when you can run * curl_easy_duphandle() for each new thread to avoid a series of identical * curl_easy_setopt() invokes in every thread.

    easy_escape ¶

    easy_escape :: proc "c" (handle: ^CURL, string: cstring, length: i32) -> cstring ---
     

    * NAME curl_easy_escape() * * DESCRIPTION * * Escapes URL strings (converts all letters consider illegal in URLs to their * %XX versions). This function returns a new allocated string or NULL if an * error occurred.

    easy_getinfo ¶

    easy_getinfo :: proc "c" (curl: ^CURL, info: INFO, .. args: ..any) -> code ---
     

    * NAME curl_easy_getinfo() * * DESCRIPTION * * Request internal information from the curl session with this function. * The third argument MUST be pointing to the specific type of the used option * which is documented in each manpage of the option. The data pointed to * will be filled in accordingly and can be relied upon only if the function returns CURLE_OK. This function is intended to get used AFTER* a performed * transfer, all results from this function are undefined until the transfer * is completed.

    easy_header ¶

    easy_header :: proc "c" (
    	easy:    ^CURL, 
    	name:    cstring, 
    	index:   uint, 
    	origin:  u32, 
    	request: i32, 
    	hout:    ^^header, 
    ) -> Hcode ---

    easy_init ¶

    easy_init :: proc "c" () -> ^CURL ---

    easy_nextheader ¶

    easy_nextheader :: proc "c" (easy: ^CURL, origin: u32, request: i32, prev: ^header) -> ^header ---

    easy_option_by_id ¶

    easy_option_by_id :: proc "c" (id: option) -> ^easyoption ---

    easy_option_by_name ¶

    easy_option_by_name :: proc "c" (name: cstring) -> ^easyoption ---

    easy_option_next ¶

    easy_option_next :: proc "c" (prev: ^easyoption) -> ^easyoption ---

    easy_pause ¶

    easy_pause :: proc "c" (handle: ^CURL, bitmask: u32) -> code ---
     

    * NAME curl_easy_pause() * * DESCRIPTION * * The curl_easy_pause function pauses or unpauses transfers. Select the new * state by setting the bitmask, use the convenience defines below. *

    easy_perform ¶

    easy_perform :: proc "c" (curl: ^CURL) -> code ---

    easy_recv ¶

    easy_recv :: proc "c" (curl: ^CURL, buffer: rawptr, buflen: uint, n: ^uint) -> code ---
     

    * NAME curl_easy_recv() * * DESCRIPTION * * Receives data from the connected socket. Use after successful * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.

    easy_reset ¶

    easy_reset :: proc "c" (curl: ^CURL) ---
     

    * NAME curl_easy_reset() * * DESCRIPTION * * Re-initializes a curl handle to the default values. This puts back the * handle to the same state as it was in when it was just created. * * It does keep: live connections, the Session ID cache, the DNS cache and the * cookies.

    easy_send ¶

    easy_send :: proc "c" (curl: ^CURL, buffer: rawptr, buflen: uint, n: ^uint) -> code ---
     

    * NAME curl_easy_send() * * DESCRIPTION * * Sends data over the connected socket. Use after successful * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.

    easy_setopt ¶

    easy_setopt :: proc "c" (curl: ^CURL, option: option, .. args: ..any) -> code ---

    easy_ssls_export ¶

    easy_ssls_export :: proc "c" (handle: ^CURL, export_fn: ssls_export_cb, userptr: rawptr) -> code ---
     

    * NAME curl_easy_ssls_export() * * DESCRIPTION * * The curl_easy_ssls_export function iterates over all SSL sessions stored * in the easy handle (or underlying share) and invokes the passed * callback. *

    easy_ssls_import ¶

    easy_ssls_import :: proc "c" (
    	handle:      ^CURL, 
    	session_key: cstring, 
    	shmac:       [^]u8, 
    	shmac_len:   uint, 
    	sdata:       [^]u8, 
    	sdata_len:   uint, 
    ) -> code ---
     

    * NAME curl_easy_ssls_import() * * DESCRIPTION * * The curl_easy_ssls_import function adds a previously exported SSL session * to the SSL session cache of the easy handle (or the underlying share).

    easy_strerror ¶

    easy_strerror :: proc "c" (code) -> cstring ---
     

    * NAME curl_easy_strerror() * * DESCRIPTION * * The curl_easy_strerror function may be used to turn a CURLcode value * into the equivalent human readable error string. This is useful * for printing meaningful error messages.

    easy_unescape ¶

    easy_unescape :: proc "c" (handle: ^CURL, string: cstring, length: i32, outlength: ^i32) -> cstring ---
     

    * NAME curl_easy_unescape() * * DESCRIPTION * * Unescapes URL encoding in strings (converts all %XX codes to their 8bit * versions). This function returns a new allocated string or NULL if an error * occurred. * Conversion Note: On non-ASCII platforms the ASCII %XX codes are * converted into the host encoding.

    easy_upkeep ¶

    easy_upkeep :: proc "c" (curl: ^CURL) -> code ---
     

    * NAME curl_easy_upkeep() * * DESCRIPTION * * Performs connection upkeep for the given session handle.

    escape ¶

    escape :: proc "c" (string: cstring, length: i32) -> cstring ---
     

    the previous version:

    free ¶

    free :: proc "c" (p: rawptr) ---
     

    * NAME curl_free() * * DESCRIPTION * * Provided for de-allocation in the same translation unit that did the * allocation. Added in libcurl 7.10

    getdate ¶

    getdate :: proc "c" (p: cstring, unused: ^libc.time_t) -> libc.time_t ---
     

    * NAME curl_getdate() * * DESCRIPTION * * Returns the time, in seconds since 1 Jan 1970 of the time string given in * the first argument. The time argument in the second parameter is unused * and should be set to NULL.

    getenv ¶

    getenv :: proc "c" (variable: cstring) -> cstring ---
     

    * NAME curl_getenv() * * DESCRIPTION * * Returns a malloc()'ed string that MUST be curl_free()ed after usage is * complete. DEPRECATED - see lib/README.curlx

    global_cleanup ¶

    global_cleanup :: proc "c" () ---
     

    * NAME curl_global_cleanup() * * DESCRIPTION * * curl_global_cleanup() should be invoked exactly once for each application * that uses libcurl

    global_init ¶

    global_init :: proc "c" (flags: i32) -> code ---
     

    * NAME curl_global_init() * * DESCRIPTION * * curl_global_init() should be invoked exactly once for each application that * uses libcurl and before any call of other libcurl functions.

    * This function is thread-safe if CURL_VERSION_THREADSAFE is set in the * curl_version_info_data.features flag (fetch by curl_version_info()).

    global_init_mem ¶

    global_init_mem :: proc "c" (
    	flags: i32, 
    	m:     malloc_callback, 
    	f:     free_callback, 
    	r:     realloc_callback, 
    	s:     strdup_callback, 
    	c:     calloc_callback, 
    ) -> code ---
     

    * NAME curl_global_init_mem() * * DESCRIPTION * * curl_global_init() or curl_global_init_mem() should be invoked exactly once * for each application that uses libcurl. This function can be used to * initialize libcurl and set user defined memory management callback * functions. Users can implement memory management routines to check for * memory leaks, check for mis-use of the curl library etc. User registered * callback routines will be invoked by this library instead of the system * memory management routines like malloc, free etc.

    global_sslset ¶

    global_sslset :: proc "c" (id: sslbackend, name: cstring, avail: ^^^ssl_backend) -> sslset ---

    global_trace ¶

    global_trace :: proc "c" (config: cstring) -> code ---
     

    * NAME curl_global_trace() * * DESCRIPTION * * curl_global_trace() can be invoked at application start to * configure which components in curl should participate in tracing.

    * This function is thread-safe if CURL_VERSION_THREADSAFE is set in the * curl_version_info_data.features flag (fetch by curl_version_info()).

    mime_addpart ¶

    mime_addpart :: proc "c" (mime: ^mime) -> ^mimepart ---
     

    * NAME curl_mime_addpart() * * DESCRIPTION * * Append a new empty part to the given mime context and return a handle to * the created part.

    mime_data ¶

    mime_data :: proc "c" (part: ^mimepart, data: [^]u8, datasize: uint) -> code ---
     

    * NAME curl_mime_data() * * DESCRIPTION * * Set mime part data source from memory data,

    mime_data_cb ¶

    mime_data_cb :: proc "c" (
    	part:     ^mimepart, 
    	datasize: i64, 
    	readfunc: read_callback, 
    	seekfunc: seek_callback, 
    	freefunc: free_callback, 
    	arg:      rawptr, 
    ) -> code ---
     

    * NAME curl_mime_data_cb() * * DESCRIPTION * * Set mime part data source from callback function.

    mime_encoder ¶

    mime_encoder :: proc "c" (part: ^mimepart, encoding: cstring) -> code ---
     

    * NAME curl_mime_encoder() * * DESCRIPTION * * Set mime data transfer encoder.

    mime_filedata ¶

    mime_filedata :: proc "c" (part: ^mimepart, filename: rawptr) -> code ---
     

    * NAME curl_mime_filedata() * * DESCRIPTION * * Set mime part data source from named file.

    mime_filename ¶

    mime_filename :: proc "c" (part: ^mimepart, filename: cstring) -> code ---
     

    * NAME curl_mime_filename() * * DESCRIPTION * * Set mime part remote filename.

    mime_free ¶

    mime_free :: proc "c" (mime: ^mime) ---
     

    * NAME curl_mime_free() * * DESCRIPTION * * release a mime handle and its substructures.

    mime_headers ¶

    mime_headers :: proc "c" (part: ^mimepart, headers: ^slist, take_ownership: i32) -> code ---
     

    * NAME curl_mime_headers() * * DESCRIPTION * * Set mime part headers.

    mime_init ¶

    mime_init :: proc "c" (easy: ^CURL) -> ^mime ---
     

    * NAME curl_mime_init() * * DESCRIPTION * * Create a mime context and return its handle. The easy parameter is the * target handle.

    mime_name ¶

    mime_name :: proc "c" (part: ^mimepart, name: cstring) -> code ---
     

    * NAME curl_mime_name() * * DESCRIPTION * * Set mime/form part name.

    mime_subparts ¶

    mime_subparts :: proc "c" (part: ^mimepart, subparts: ^mime) -> code ---
     

    * NAME curl_mime_subparts() * * DESCRIPTION * * Set mime part data source from subparts.

    mime_type ¶

    mime_type :: proc "c" (part: ^mimepart, mimetype: cstring) -> code ---
     

    * NAME curl_mime_type() * * DESCRIPTION * * Set mime part type.

    multi_add_handle ¶

    multi_add_handle :: proc "c" (multi_handle: ^CURLM, curl_handle: ^CURL) -> Mcode ---
     

    * Name: curl_multi_add_handle() * * Desc: add a standard curl handle to the multi stack * * Returns: CURLMcode type, general multi error code.

    multi_assign ¶

    multi_assign :: proc "c" (multi_handle: ^CURLM, sockfd: socket_t, sockp: rawptr) -> Mcode ---
     

    * Name: curl_multi_assign() * * Desc: This function sets an association in the multi handle between the * given socket and a private pointer of the application. This is * (only) useful for curl_multi_socket uses. * * Returns: CURLM error code.

    multi_cleanup ¶

    multi_cleanup :: proc "c" (multi_handle: ^CURLM) -> Mcode ---
     

    * Name: curl_multi_cleanup() * * Desc: Cleans up and removes a whole multi stack. It does not free or * touch any individual easy handles in any way. We need to define * in what state those handles will be if this function is called * in the middle of a transfer. * * Returns: CURLMcode type, general multi error code.

    multi_fdset ¶

    multi_fdset :: proc "c" (multi_handle: ^CURLM, read_fd_set: ^sys_windows.fd_set, write_fd_set: ^sys_windows.fd_set, exc_fd_set: ^sys_windows.fd_set, max_fd: ^i32) -> Mcode ---
     

    * Name: curl_multi_fdset() * * Desc: Ask curl for its fd_set sets. The app can use these to select() or * poll() on. We want curl_multi_perform() called as soon as one of * them are ready. * * Returns: CURLMcode type, general multi error code.

    multi_get_handles ¶

    multi_get_handles :: proc "c" (multi_handle: ^CURLM) -> [^]^CURL ---
     

    * Name: curl_multi_get_handles() * * Desc: Returns an allocated array holding all handles currently added to * the multi handle. Marks the final entry with a NULL pointer. If * there is no easy handle added to the multi handle, this function * returns an array with the first entry as a NULL pointer. * Returns: NULL on failure, otherwise a CURL *array pointer

    multi_get_offt ¶

    multi_get_offt :: proc "c" (multi_handle: ^CURLM, info: Minfo, value: ^i64) -> Mcode ---
     

    * Name: curl_multi_get_offt() * Desc: Retrieves a numeric value for the `CURLMINFO_` enums. * * Returns: CULRM_OK or error when value could not be obtained.

    multi_info_read ¶

    multi_info_read :: proc "c" (multi_handle: ^CURLM, msgs_in_queue: ^i32) -> ^Msg ---
     

    * Name: curl_multi_info_read() * * Desc: Ask the multi handle if there is any messages/informationals from * the individual transfers. Messages include informationals such as * error code from the transfer or just the fact that a transfer is * completed. More details on these should be written down as well. * * Repeated calls to this function will return a new struct each * time, until a special "end of msgs" struct is returned as a signal * that there is no more to get at this point. * * The data the returned pointer points to will not survive calling * curl_multi_cleanup(). * * The 'CURLMsg' struct is meant to be simple and only contain basic * information. If more involved information is wanted, we will * provide the particular "transfer handle" in that struct and that * should/could/would be used in subsequent curl_easy_getinfo() calls * (or similar). The point being that we must never expose complex * structs to applications, as then we will undoubtably get backwards * compatibility problems in the future. * * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out * of structs. It also writes the number of messages left in the * queue (after this read) in the integer the second argument points * to.

    multi_init ¶

    multi_init :: proc "c" () -> ^CURLM ---
     

    * Name: curl_multi_init() * * Desc: initialize multi-style curl usage * * Returns: a new CURLM handle to use in all 'curl_multi' functions.

    multi_notify_disable ¶

    multi_notify_disable :: proc "c" (multi: ^CURLM, notification: MULTI_NOTIFY) -> Mcode ---

    multi_notify_enable ¶

    multi_notify_enable :: proc "c" (multi: ^CURLM, notification: MULTI_NOTIFY) -> Mcode ---

    multi_perform ¶

    multi_perform :: proc "c" (multi_handle: ^CURLM, running_handles: ^i32) -> Mcode ---
     

    * Name: curl_multi_perform() * * Desc: When the app thinks there is data available for curl it calls this * function to read/write whatever there is right now. This returns * as soon as the reads and writes are done. This function does not * require that there actually is data available for reading or that * data can be written, it can be called just in case. It returns * the number of handles that still transfer data in the second * argument's integer-pointer. * Returns: CURLMcode type, general multi error code. NOTE* that this only * returns errors etc regarding the whole multi stack. There might * still have occurred problems on individual transfers even when * this returns OK.

    multi_poll ¶

    multi_poll :: proc "c" (multi_handle: ^CURLM, extra_fds: [^]waitfd, extra_nfds: u32, timeout_ms: i32, ret: ^i32) -> Mcode ---
     

    * Name: curl_multi_poll() * * Desc: Poll on all fds within a CURLM set as well as any * additional fds passed to the function. * * Returns: CURLMcode type, general multi error code.

    multi_remove_handle ¶

    multi_remove_handle :: proc "c" (multi_handle: ^CURLM, curl_handle: ^CURL) -> Mcode ---
     

    * Name: curl_multi_remove_handle() * * Desc: removes a curl handle from the multi stack again * * Returns: CURLMcode type, general multi error code.

    multi_setopt ¶

    multi_setopt :: proc "c" (multi_handle: ^CURLM, option: Moption, .. args: ..any) -> Mcode ---
     

    * Name: curl_multi_setopt() * * Desc: Sets options for the multi handle. * * Returns: CURLM error code.

    multi_socket_action ¶

    multi_socket_action :: proc "c" (multi_handle: ^CURLM, s: socket_t, ev_bitmask: i32, running_handles: ^i32) -> Mcode ---

    multi_strerror ¶

    multi_strerror :: proc "c" (Mcode) -> cstring ---
     

    * Name: curl_multi_strerror() * * Desc: The curl_multi_strerror function may be used to turn a CURLMcode * value into the equivalent human readable error string. This is * useful for printing meaningful error messages. * * Returns: A pointer to a null-terminated error message.

    multi_timeout ¶

    multi_timeout :: proc "c" (multi_handle: ^CURLM, milliseconds: ^i32) -> Mcode ---
     

    * Name: curl_multi_timeout() * * Desc: Returns the maximum number of milliseconds the app is allowed to * wait before curl_multi_socket() or curl_multi_perform() must be * called (to allow libcurl's timed events to take place). * * Returns: CURLM error code.

    multi_wait ¶

    multi_wait :: proc "c" (multi_handle: ^CURLM, extra_fds: [^]waitfd, extra_nfds: u32, timeout_ms: i32, ret: ^i32) -> Mcode ---
     

    * Name: curl_multi_wait() * * Desc: Poll on all fds within a CURLM set as well as any * additional fds passed to the function. * * Returns: CURLMcode type, general multi error code.

    multi_waitfds ¶

    multi_waitfds :: proc "c" (multi: ^CURLM, ufds: [^]waitfd, size: u32, fd_count: ^u32) -> Mcode ---
     

    * Name: curl_multi_waitfds() * * Desc: Ask curl for fds for polling. The app can use these to poll on. * We want curl_multi_perform() called as soon as one of them are * ready. Passing zero size allows to get just a number of fds. * * Returns: CURLMcode type, general multi error code.

    multi_wakeup ¶

    multi_wakeup :: proc "c" (multi_handle: ^CURLM) -> Mcode ---
     

    * Name: curl_multi_wakeup() * * Desc: wakes up a sleeping curl_multi_poll call. * * Returns: CURLMcode type, general multi error code.

    pushheader_byname ¶

    pushheader_byname :: proc "c" (h: ^pushheaders, name: cstring) -> cstring ---

    pushheader_bynum ¶

    pushheader_bynum :: proc "c" (h: ^pushheaders, num: uint) -> cstring ---

    share_cleanup ¶

    share_cleanup :: proc "c" (share: ^CURLSH) -> SHcode ---

    share_init ¶

    share_init :: proc "c" () -> ^CURLSH ---

    share_setopt ¶

    share_setopt :: proc "c" (share: ^CURLSH, option: SHoption, .. args: ..any) -> SHcode ---

    share_strerror ¶

    share_strerror :: proc "c" (SHcode) -> cstring ---
     

    * NAME curl_share_strerror() * * DESCRIPTION * * The curl_share_strerror function may be used to turn a CURLSHcode value * into the equivalent human readable error string. This is useful * for printing meaningful error messages.

    slist_append ¶

    slist_append :: proc "c" (list: ^slist, data: cstring) -> ^slist ---
     

    * NAME curl_slist_append() * * DESCRIPTION * * Appends a string to a linked list. If no list exists, it will be created * first. Returns the new list, after appending.

    slist_free_all ¶

    slist_free_all :: proc "c" (list: ^slist) ---
     

    * NAME curl_slist_free_all() * * DESCRIPTION * * free a previously built curl_slist.

    strequal ¶

    strequal :: proc "c" (s1, s2: cstring) -> i32 ---
     

    curl_strequal() and curl_strnequal() are subject for removal in a future release

    strnequal ¶

    strnequal :: proc "c" (s1, s2: cstring, n: uint) -> i32 ---

    unescape ¶

    unescape :: proc "c" (string: cstring, length: i32) -> cstring ---
     

    the previous version

    url ¶

    url :: proc "c" () -> ^CURLU ---
     

    * curl_url() creates a new CURLU handle and returns a pointer to it. * Must be freed with curl_url_cleanup().

    url_cleanup ¶

    url_cleanup :: proc "c" (handle: ^CURLU) ---
     

    * curl_url_cleanup() frees the CURLU handle and related resources used for * the URL parsing. It will not free strings previously returned with the URL * API.

    url_dup ¶

    url_dup :: proc "c" (input: ^CURLU) -> ^CURLU ---
     

    * curl_url_dup() duplicates a CURLU handle and returns a new copy. The new * handle must also be freed with curl_url_cleanup().

    url_get ¶

    url_get :: proc "c" (handle: ^CURLU, what: UPart, part: ^[^]u8, flags: UFlags) -> ^Ucode ---
     

    * curl_url_get() extracts a specific part of the URL from a CURLU * handle. Returns error code. The returned pointer MUST be freed with * curl_free() afterwards.

    url_set ¶

    url_set :: proc "c" (handle: ^CURLU, what: ^UPart, part: cstring, flags: UFlags) -> Ucode ---
     

    * curl_url_set() sets a specific part of the URL in a CURLU handle. Returns * error code. The passed in string will be copied. Passing a NULL instead of * a part string, clears that part.

    url_strerror ¶

    url_strerror :: proc "c" (Ucode) -> cstring ---
     

    * curl_url_strerror() turns a CURLUcode value into the equivalent human * readable error string. This is useful for printing meaningful error * messages.

    version ¶

    version :: proc "c" () -> cstring ---
     

    * NAME curl_version() * * DESCRIPTION * * Returns a static ASCII string of the libcurl version.

    version_info ¶

    version_info :: proc "c" (version_enum) -> ^version_info_data ---
     

    * NAME curl_version_info() * * DESCRIPTION * * This function returns a pointer to a static copy of the version info * struct. See above.

    ws_meta ¶

    ws_meta :: proc "c" (curl: ^CURL) -> ^ws_frame ---

    ws_recv ¶

    ws_recv :: proc "c" (curl: ^CURL, buffer: rawptr, buflen: uint, recv: ^uint, metap: ^^ws_frame) -> code ---
     

    * NAME curl_ws_recv() * * DESCRIPTION * * Receives data from the websocket connection. Use after successful * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.

    ws_send ¶

    ws_send :: proc "c" (
    	curl:     ^CURL, 
    	buffer:   rawptr, 
    	buflen:   uint, 
    	sent:     ^uint, 
    	fragsize: i64, 
    	flags:    ws_flags, 
    ) -> code ---
     

    * NAME curl_ws_send() * * DESCRIPTION * * Sends data over the websocket connection. Use after successful * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.

    ws_start_frame ¶

    ws_start_frame :: proc "c" (curl: ^CURL, flags: u32, frame_len: i64) -> code ---
     

    * NAME curl_ws_start_frame() * * DESCRIPTION * * Buffers a websocket frame header with the given flags and length. * Errors when a previous frame is not complete, e.g. not all its * payload has been added.

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

    Generated with odin version dev-2026-02 (vendor "odin") Windows_amd64 @ 2026-02-09 21:31:22.169148000 +0000 UTC