--curl.h from libcurl 7.46.0
local ffi = require'ffi'
if ffi.abi'win' then
if ffi.abi'64bit' then
ffi.cdef'typedef uint64_t UINT_PTR;'
else
ffi.cdef'typedef uint32_t UINT_PTR;'
end
ffi.cdef[[
typedef UINT_PTR SOCKET;
typedef SOCKET curl_socket_t;
]]
else
ffi.cdef'typedef int curl_socket_t;'
end
ffi.cdef[[
// curl.h --------------------------------------------------------------------
typedef struct CURL CURL;
typedef void curl_fd_set;
typedef long long curl_off_t;
typedef long time_t;
typedef enum {
CURLOPT_WRITEDATA = 10000 + 1,
CURLOPT_URL = 10000 + 2,
CURLOPT_PORT = 0 + 3,
CURLOPT_PROXY = 10000 + 4,
CURLOPT_USERPWD = 10000 + 5,
CURLOPT_PROXYUSERPWD = 10000 + 6,
CURLOPT_RANGE = 10000 + 7,
CURLOPT_READDATA = 10000 + 9,
CURLOPT_ERRORBUFFER = 10000 + 10,
CURLOPT_WRITEFUNCTION = 20000 + 11,
CURLOPT_READFUNCTION = 20000 + 12,
CURLOPT_TIMEOUT = 0 + 13,
// CURLOPT_INFILESIZE = 0 + 14,
CURLOPT_POSTFIELDS = 10000 + 15,
CURLOPT_REFERER = 10000 + 16,
CURLOPT_FTPPORT = 10000 + 17,
CURLOPT_USERAGENT = 10000 + 18,
CURLOPT_LOW_SPEED_LIMIT = 0 + 19,
CURLOPT_LOW_SPEED_TIME = 0 + 20,
// CURLOPT_RESUME_FROM = 0 + 21,
CURLOPT_COOKIE = 10000 + 22,
CURLOPT_HTTPHEADER = 10000 + 23,
CURLOPT_HTTPPOST = 10000 + 24,
CURLOPT_SSLCERT = 10000 + 25,
CURLOPT_KEYPASSWD = 10000 + 26,
CURLOPT_CRLF = 0 + 27,
CURLOPT_QUOTE = 10000 + 28,
CURLOPT_HEADERDATA = 10000 + 29,
CURLOPT_COOKIEFILE = 10000 + 31,
CURLOPT_SSLVERSION = 0 + 32,
CURLOPT_TIMECONDITION = 0 + 33,
CURLOPT_TIMEVALUE = 0 + 34,
CURLOPT_CUSTOMREQUEST = 10000 + 36,
CURLOPT_STDERR = 10000 + 37,
CURLOPT_POSTQUOTE = 10000 + 39,
CURLOPT_OBSOLETE40 = 10000 + 40,
CURLOPT_VERBOSE = 0 + 41,
CURLOPT_HEADER = 0 + 42,
CURLOPT_NOPROGRESS = 0 + 43,
CURLOPT_NOBODY = 0 + 44,
CURLOPT_FAILONERROR = 0 + 45,
CURLOPT_UPLOAD = 0 + 46,
CURLOPT_POST = 0 + 47,
CURLOPT_DIRLISTONLY = 0 + 48,
CURLOPT_APPEND = 0 + 50,
CURLOPT_NETRC = 0 + 51,
CURLOPT_FOLLOWLOCATION = 0 + 52,
CURLOPT_TRANSFERTEXT = 0 + 53,
CURLOPT_PUT = 0 + 54,
CURLOPT_PROGRESSFUNCTION = 20000 + 56,
CURLOPT_PROGRESSDATA = 10000 + 57,
CURLOPT_XFERINFODATA = CURLOPT_PROGRESSDATA,
CURLOPT_AUTOREFERER = 0 + 58,
CURLOPT_PROXYPORT = 0 + 59,
// CURLOPT_POSTFIELDSIZE = 0 + 60,
CURLOPT_HTTPPROXYTUNNEL = 0 + 61,
CURLOPT_INTERFACE = 10000 + 62,
CURLOPT_KRBLEVEL = 10000 + 63,
CURLOPT_SSL_VERIFYPEER = 0 + 64,
CURLOPT_CAINFO = 10000 + 65,
CURLOPT_MAXREDIRS = 0 + 68,
CURLOPT_FILETIME = 0 + 69,
CURLOPT_TELNETOPTIONS = 10000 + 70,
CURLOPT_MAXCONNECTS = 0 + 71,
CURLOPT_OBSOLETE72 = 0 + 72,
CURLOPT_FRESH_CONNECT = 0 + 74,
CURLOPT_FORBID_REUSE = 0 + 75,
CURLOPT_RANDOM_FILE = 10000 + 76,
CURLOPT_EGDSOCKET = 10000 + 77,
CURLOPT_CONNECTTIMEOUT = 0 + 78,
CURLOPT_HEADERFUNCTION = 20000 + 79,
CURLOPT_HTTPGET = 0 + 80,
CURLOPT_SSL_VERIFYHOST = 0 + 81,
CURLOPT_COOKIEJAR = 10000 + 82,
CURLOPT_SSL_CIPHER_LIST = 10000 + 83,
CURLOPT_HTTP_VERSION = 0 + 84,
CURLOPT_FTP_USE_EPSV = 0 + 85,
CURLOPT_SSLCERTTYPE = 10000 + 86,
CURLOPT_SSLKEY = 10000 + 87,
CURLOPT_SSLKEYTYPE = 10000 + 88,
CURLOPT_SSLENGINE = 10000 + 89,
CURLOPT_SSLENGINE_DEFAULT = 0 + 90,
CURLOPT_DNS_USE_GLOBAL_CACHE = 0 + 91,
CURLOPT_DNS_CACHE_TIMEOUT = 0 + 92,
CURLOPT_PREQUOTE = 10000 + 93,
CURLOPT_DEBUGFUNCTION = 20000 + 94,
CURLOPT_DEBUGDATA = 10000 + 95,
CURLOPT_COOKIESESSION = 0 + 96,
CURLOPT_CAPATH = 10000 + 97,
CURLOPT_BUFFERSIZE = 0 + 98,
CURLOPT_NOSIGNAL = 0 + 99,
CURLOPT_SHARE = 10000 + 100,
CURLOPT_PROXYTYPE = 0 + 101,
CURLOPT_ACCEPT_ENCODING = 10000 + 102,
CURLOPT_PRIVATE = 10000 + 103,
CURLOPT_HTTP200ALIASES = 10000 + 104,
CURLOPT_UNRESTRICTED_AUTH = 0 + 105,
CURLOPT_FTP_USE_EPRT = 0 + 106,
CURLOPT_HTTPAUTH = 0 + 107,
CURLOPT_SSL_CTX_FUNCTION = 20000 + 108,
CURLOPT_SSL_CTX_DATA = 10000 + 109,
CURLOPT_FTP_CREATE_MISSING_DIRS = 0 + 110,
CURLOPT_PROXYAUTH = 0 + 111,
CURLOPT_FTP_RESPONSE_TIMEOUT = 0 + 112,
CURLOPT_SERVER_RESPONSE_TIMEOUT = CURLOPT_FTP_RESPONSE_TIMEOUT,
CURLOPT_IPRESOLVE = 0 + 113,
// CURLOPT_MAXFILESIZE = 0 + 114,
CURLOPT_INFILESIZE = 30000 + 115, // was *_LARGE
CURLOPT_RESUME_FROM = 30000 + 116, // was *_LARGE
CURLOPT_MAXFILESIZE = 30000 + 117, // was *_LARGE
CURLOPT_NETRC_FILE = 10000 + 118,
CURLOPT_USE_SSL = 0 + 119,
CURLOPT_POSTFIELDSIZE = 30000 + 120, // was *_LARGE
CURLOPT_TCP_NODELAY = 0 + 121,
CURLOPT_FTPSSLAUTH = 0 + 129,
CURLOPT_IOCTLFUNCTION = 20000 + 130,
CURLOPT_IOCTLDATA = 10000 + 131,
CURLOPT_FTP_ACCOUNT = 10000 + 134,
CURLOPT_COOKIELIST = 10000 + 135,
CURLOPT_IGNORE_CONTENT_LENGTH = 0 + 136,
CURLOPT_FTP_SKIP_PASV_IP = 0 + 137,
CURLOPT_FTP_FILEMETHOD = 0 + 138,
CURLOPT_LOCALPORT = 0 + 139,
CURLOPT_LOCALPORTRANGE = 0 + 140,
CURLOPT_CONNECT_ONLY = 0 + 141,
CURLOPT_CONV_FROM_NETWORK_FUNCTION = 20000 + 142,
CURLOPT_CONV_TO_NETWORK_FUNCTION = 20000 + 143,
CURLOPT_CONV_FROM_UTF8_FUNCTION = 20000 + 144,
CURLOPT_MAX_SEND_SPEED = 30000 + 145, // was *_LARGE
CURLOPT_MAX_RECV_SPEED = 30000 + 146, // was *_LARGE
CURLOPT_FTP_ALTERNATIVE_TO_USER = 10000 + 147,
CURLOPT_SOCKOPTFUNCTION = 20000 + 148,
CURLOPT_SOCKOPTDATA = 10000 + 149,
CURLOPT_SSL_SESSIONID_CACHE = 0 + 150,
CURLOPT_SSH_AUTH_TYPES = 0 + 151,
CURLOPT_SSH_PUBLIC_KEYFILE = 10000 + 152,
CURLOPT_SSH_PRIVATE_KEYFILE = 10000 + 153,
CURLOPT_FTP_SSL_CCC = 0 + 154,
CURLOPT_TIMEOUT_MS = 0 + 155,
CURLOPT_CONNECTTIMEOUT_MS = 0 + 156,
CURLOPT_HTTP_TRANSFER_DECODING = 0 + 157,
CURLOPT_HTTP_CONTENT_DECODING = 0 + 158,
CURLOPT_NEW_FILE_PERMS = 0 + 159,
CURLOPT_NEW_DIRECTORY_PERMS = 0 + 160,
CURLOPT_POSTREDIR = 0 + 161,
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 = 10000 + 162,
CURLOPT_OPENSOCKETFUNCTION = 20000 + 163,
CURLOPT_OPENSOCKETDATA = 10000 + 164,
CURLOPT_COPYPOSTFIELDS = 10000 + 165,
CURLOPT_PROXY_TRANSFER_MODE = 0 + 166,
CURLOPT_SEEKFUNCTION = 20000 + 167,
CURLOPT_SEEKDATA = 10000 + 168,
CURLOPT_CRLFILE = 10000 + 169,
CURLOPT_ISSUERCERT = 10000 + 170,
CURLOPT_ADDRESS_SCOPE = 0 + 171,
CURLOPT_CERTINFO = 0 + 172,
CURLOPT_USERNAME = 10000 + 173,
CURLOPT_PASSWORD = 10000 + 174,
CURLOPT_PROXYUSERNAME = 10000 + 175,
CURLOPT_PROXYPASSWORD = 10000 + 176,
CURLOPT_NOPROXY = 10000 + 177,
CURLOPT_TFTP_BLKSIZE = 0 + 178,
CURLOPT_SOCKS5_GSSAPI_SERVICE = 10000 + 179,
CURLOPT_SOCKS5_GSSAPI_NEC = 0 + 180,
CURLOPT_PROTOCOLS = 0 + 181,
CURLOPT_REDIR_PROTOCOLS = 0 + 182,
CURLOPT_SSH_KNOWNHOSTS = 10000 + 183,
CURLOPT_SSH_KEYFUNCTION = 20000 + 184,
CURLOPT_SSH_KEYDATA = 10000 + 185,
CURLOPT_MAIL_FROM = 10000 + 186,
CURLOPT_MAIL_RCPT = 10000 + 187,
CURLOPT_FTP_USE_PRET = 0 + 188,
CURLOPT_RTSP_REQUEST = 0 + 189,
CURLOPT_RTSP_SESSION_ID = 10000 + 190,
CURLOPT_RTSP_STREAM_URI = 10000 + 191,
CURLOPT_RTSP_TRANSPORT = 10000 + 192,
CURLOPT_RTSP_CLIENT_CSEQ = 0 + 193,
CURLOPT_RTSP_SERVER_CSEQ = 0 + 194,
CURLOPT_INTERLEAVEDATA = 10000 + 195,
CURLOPT_INTERLEAVEFUNCTION = 20000 + 196,
CURLOPT_WILDCARDMATCH = 0 + 197,
CURLOPT_CHUNK_BGN_FUNCTION = 20000 + 198,
CURLOPT_CHUNK_END_FUNCTION = 20000 + 199,
CURLOPT_FNMATCH_FUNCTION = 20000 + 200,
CURLOPT_CHUNK_DATA = 10000 + 201,
CURLOPT_FNMATCH_DATA = 10000 + 202,
CURLOPT_RESOLVE = 10000 + 203,
CURLOPT_TLSAUTH_USERNAME = 10000 + 204,
CURLOPT_TLSAUTH_PASSWORD = 10000 + 205,
CURLOPT_TLSAUTH_TYPE = 10000 + 206,
CURLOPT_TRANSFER_ENCODING = 0 + 207,
CURLOPT_CLOSESOCKETFUNCTION = 20000 + 208,
CURLOPT_CLOSESOCKETDATA = 10000 + 209,
CURLOPT_GSSAPI_DELEGATION = 0 + 210,
CURLOPT_DNS_SERVERS = 10000 + 211,
CURLOPT_ACCEPTTIMEOUT_MS = 0 + 212,
CURLOPT_TCP_KEEPALIVE = 0 + 213,
CURLOPT_TCP_KEEPIDLE = 0 + 214,
CURLOPT_TCP_KEEPINTVL = 0 + 215,
CURLOPT_SSL_OPTIONS = 0 + 216,
CURLOPT_MAIL_AUTH = 10000 + 217,
CURLOPT_SASL_IR = 0 + 218,
CURLOPT_XFERINFOFUNCTION = 20000 + 219,
CURLOPT_XOAUTH2_BEARER = 10000 + 220,
CURLOPT_DNS_INTERFACE = 10000 + 221,
CURLOPT_DNS_LOCAL_IP4 = 10000 + 222,
CURLOPT_DNS_LOCAL_IP6 = 10000 + 223,
CURLOPT_LOGIN_OPTIONS = 10000 + 224,
CURLOPT_SSL_ENABLE_NPN = 0 + 225,
CURLOPT_SSL_ENABLE_ALPN = 0 + 226,
CURLOPT_EXPECT_100_TIMEOUT_MS = 0 + 227,
CURLOPT_PROXYHEADER = 10000 + 228,
CURLOPT_HEADEROPT = 0 + 229,
CURLOPT_PINNEDPUBLICKEY = 10000 + 230,
CURLOPT_UNIX_SOCKET_PATH = 10000 + 231,
CURLOPT_SSL_VERIFYSTATUS = 0 + 232,
CURLOPT_SSL_FALSESTART = 0 + 233,
CURLOPT_PATH_AS_IS = 0 + 234,
CURLOPT_PROXY_SERVICE_NAME = 10000 + 235,
CURLOPT_SERVICE_NAME = 10000 + 236,
CURLOPT_PIPEWAIT = 0 + 237,
CURLOPT_DEFAULT_PROTOCOL = 10000 + 238,
CURLOPT_LASTENTRY
} CURLoption;
enum {
CURLOPT_POST301 = CURLOPT_POSTREDIR,
CURLOPT_SSLKEYPASSWD = CURLOPT_KEYPASSWD,
CURLOPT_FTPAPPEND = CURLOPT_APPEND,
CURLOPT_FTPLISTONLY = CURLOPT_DIRLISTONLY,
CURLOPT_FTP_SSL = CURLOPT_USE_SSL,
CURLOPT_SSLCERTPASSWD = CURLOPT_KEYPASSWD,
CURLOPT_KRB4LEVEL = CURLOPT_KRBLEVEL,
CURL_IPRESOLVE_WHATEVER = 0,
CURL_IPRESOLVE_V4 = 1,
CURL_IPRESOLVE_V6 = 2,
CURLOPT_RTSPHEADER = CURLOPT_HTTPHEADER,
};
enum {
CURL_HTTPPOST_FILENAME = (1<<0),
CURL_HTTPPOST_READFILE = (1<<1),
CURL_HTTPPOST_PTRNAME = (1<<2),
CURL_HTTPPOST_PTRCONTENTS = (1<<3),
CURL_HTTPPOST_BUFFER = (1<<4),
CURL_HTTPPOST_PTRBUFFER = (1<<5),
CURL_HTTPPOST_CALLBACK = (1<<6),
CURL_HTTPPOST_LARGE = (1<<7),
};
struct curl_httppost {
struct curl_httppost *next;
char *name;
long namelength;
char *contents;
long contentslength;
char *buffer;
long bufferlength;
char *contenttype;
struct curl_slist* contentheader;
struct curl_httppost *more;
long flags;
char *showfilename;
void *userp;
curl_off_t contentlen;
};
typedef int (*curl_progress_callback)(void *clientp,
double dltotal,
double dlnow,
double ultotal,
double ulnow);
typedef int (*curl_xferinfo_callback)(void *clientp,
curl_off_t dltotal,
curl_off_t dlnow,
curl_off_t ultotal,
curl_off_t ulnow);
enum {
CURL_MAX_WRITE_SIZE = 16384,
CURL_MAX_HTTP_HEADER = (100*1024),
CURL_WRITEFUNC_PAUSE = 0x10000001,
};
typedef size_t (*curl_write_callback)(char *buffer,
size_t size,
size_t nitems,
void *outstream);
typedef enum {
CURLFILETYPE_FILE = 0,
CURLFILETYPE_DIRECTORY,
CURLFILETYPE_SYMLINK,
CURLFILETYPE_DEVICE_BLOCK,
CURLFILETYPE_DEVICE_CHAR,
CURLFILETYPE_NAMEDPIPE,
CURLFILETYPE_SOCKET,
CURLFILETYPE_DOOR,
CURLFILETYPE_UNKNOWN
} curlfiletype;
enum {
CURLFINFOFLAG_KNOWN_FILENAME = (1<<0),
CURLFINFOFLAG_KNOWN_FILETYPE = (1<<1),
CURLFINFOFLAG_KNOWN_TIME = (1<<2),
CURLFINFOFLAG_KNOWN_PERM = (1<<3),
CURLFINFOFLAG_KNOWN_UID = (1<<4),
CURLFINFOFLAG_KNOWN_GID = (1<<5),
CURLFINFOFLAG_KNOWN_SIZE = (1<<6),
CURLFINFOFLAG_KNOWN_HLINKCOUNT = (1<<7),
};
struct curl_fileinfo {
char *filename;
curlfiletype filetype;
time_t time;
unsigned int perm;
int uid;
int gid;
curl_off_t size;
long int hardlinks;
struct {
char *time;
char *perm;
char *user;
char *group;
char *target;
} strings;
unsigned int flags;
char * b_data;
size_t b_size;
size_t b_used;
};
enum {
CURL_CHUNK_BGN_FUNC_OK = 0,
CURL_CHUNK_BGN_FUNC_FAIL = 1,
CURL_CHUNK_BGN_FUNC_SKIP = 2,
};
typedef long (*curl_chunk_bgn_callback)(const void *transfer_info,
void *ptr,
int remains);
enum {
CURL_CHUNK_END_FUNC_OK = 0,
CURL_CHUNK_END_FUNC_FAIL = 1,
};
typedef long (*curl_chunk_end_callback)(void *ptr);
enum {
CURL_FNMATCHFUNC_MATCH = 0,
CURL_FNMATCHFUNC_NOMATCH = 1,
CURL_FNMATCHFUNC_FAIL = 2,
};
typedef int (*curl_fnmatch_callback)(void *ptr,
const char *pattern,
const char *string);
enum {
CURL_SEEKFUNC_OK = 0,
CURL_SEEKFUNC_FAIL = 1,
CURL_SEEKFUNC_CANTSEEK = 2,
};
typedef int (*curl_seek_callback)(void *instream,
curl_off_t offset,
int origin);
enum {
CURL_READFUNC_ABORT = 0x10000000,
CURL_READFUNC_PAUSE = 0x10000001,
};
typedef size_t (*curl_read_callback)(char *buffer,
size_t size,
size_t nitems,
void *instream);
typedef enum {
CURLSOCKTYPE_IPCXN,
CURLSOCKTYPE_ACCEPT,
CURLSOCKTYPE_LAST
} curlsocktype;
enum {
CURL_SOCKOPT_OK = 0,
CURL_SOCKOPT_ERROR = 1,
CURL_SOCKOPT_ALREADY_CONNECTED = 2,
};
typedef int (*curl_sockopt_callback)(void *clientp,
curl_socket_t curlfd,
curlsocktype purpose);
struct curl_sockaddr {
int family;
int socktype;
int protocol;
unsigned int addrlen;
};
typedef curl_socket_t
(*curl_opensocket_callback)(void *clientp,
curlsocktype purpose,
struct curl_sockaddr *address);
typedef int
(*curl_closesocket_callback)(void *clientp, curl_socket_t item);
typedef enum {
CURLIOE_OK,
CURLIOE_UNKNOWNCMD,
CURLIOE_FAILRESTART,
CURLIOE_LAST
} curlioerr;
typedef enum {
CURLIOCMD_NOP,
CURLIOCMD_RESTARTREAD,
CURLIOCMD_LAST
} curliocmd;
typedef curlioerr (*curl_ioctl_callback)(CURL *handle,
int cmd,
void *clientp);
typedef void *(*curl_malloc_callback)(size_t size);
typedef void (*curl_free_callback)(void *ptr);
typedef void *(*curl_realloc_callback)(void *ptr, size_t size);
typedef char *(*curl_strdup_callback)(const char *str);
typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);
typedef enum {
CURLINFO_TEXT = 0,
CURLINFO_HEADER_IN,
CURLINFO_HEADER_OUT,
CURLINFO_DATA_IN,
CURLINFO_DATA_OUT,
CURLINFO_SSL_DATA_IN,
CURLINFO_SSL_DATA_OUT,
CURLINFO_END
} curl_infotype;
typedef int (*curl_debug_callback)
(CURL *handle,
curl_infotype type,
char *data,
size_t size,
void *userptr);
typedef enum {
CURLE_OK = 0,
CURLE_UNSUPPORTED_PROTOCOL,
CURLE_FAILED_INIT,
CURLE_URL_MALFORMAT,
CURLE_NOT_BUILT_IN,
CURLE_COULDNT_RESOLVE_PROXY,
CURLE_COULDNT_RESOLVE_HOST,
CURLE_COULDNT_CONNECT,
CURLE_FTP_WEIRD_SERVER_REPLY,
CURLE_REMOTE_ACCESS_DENIED,
CURLE_FTP_ACCEPT_FAILED,
CURLE_FTP_WEIRD_PASS_REPLY,
CURLE_FTP_ACCEPT_TIMEOUT,
CURLE_FTP_WEIRD_PASV_REPLY,
CURLE_FTP_WEIRD_227_FORMAT,
CURLE_FTP_CANT_GET_HOST,
CURLE_HTTP2,
CURLE_FTP_COULDNT_SET_TYPE,
CURLE_PARTIAL_FILE,
CURLE_FTP_COULDNT_RETR_FILE,
CURLE_OBSOLETE20,
CURLE_QUOTE_ERROR,
CURLE_HTTP_RETURNED_ERROR,
CURLE_WRITE_ERROR,
CURLE_OBSOLETE24,
CURLE_UPLOAD_FAILED,
CURLE_READ_ERROR,
CURLE_OUT_OF_MEMORY,
CURLE_OPERATION_TIMEDOUT,
CURLE_OBSOLETE29,
CURLE_FTP_PORT_FAILED,
CURLE_FTP_COULDNT_USE_REST,
CURLE_OBSOLETE32,
CURLE_RANGE_ERROR,
CURLE_HTTP_POST_ERROR,
CURLE_SSL_CONNECT_ERROR,
CURLE_BAD_DOWNLOAD_RESUME,
CURLE_FILE_COULDNT_READ_FILE,
CURLE_LDAP_CANNOT_BIND,
CURLE_LDAP_SEARCH_FAILED,
CURLE_OBSOLETE40,
CURLE_FUNCTION_NOT_FOUND,
CURLE_ABORTED_BY_CALLBACK,
CURLE_BAD_FUNCTION_ARGUMENT,
CURLE_OBSOLETE44,
CURLE_INTERFACE_FAILED,
CURLE_OBSOLETE46,
CURLE_TOO_MANY_REDIRECTS ,
CURLE_UNKNOWN_OPTION,
CURLE_TELNET_OPTION_SYNTAX ,
CURLE_OBSOLETE50,
CURLE_PEER_FAILED_VERIFICATION,
CURLE_GOT_NOTHING,
CURLE_SSL_ENGINE_NOTFOUND,
CURLE_SSL_ENGINE_SETFAILED,
CURLE_SEND_ERROR,
CURLE_RECV_ERROR,
CURLE_OBSOLETE57,
CURLE_SSL_CERTPROBLEM,
CURLE_SSL_CIPHER,
CURLE_SSL_CACERT,
CURLE_BAD_CONTENT_ENCODING,
CURLE_LDAP_INVALID_URL,
CURLE_FILESIZE_EXCEEDED,
CURLE_USE_SSL_FAILED,
CURLE_SEND_FAIL_REWIND,
CURLE_SSL_ENGINE_INITFAILED,
CURLE_LOGIN_DENIED,
CURLE_TFTP_NOTFOUND,
CURLE_TFTP_PERM,
CURLE_REMOTE_DISK_FULL,
CURLE_TFTP_ILLEGAL,
CURLE_TFTP_UNKNOWNID,
CURLE_REMOTE_FILE_EXISTS,
CURLE_TFTP_NOSUCHUSER,
CURLE_CONV_FAILED,
CURLE_CONV_REQD,
CURLE_SSL_CACERT_BADFILE,
CURLE_REMOTE_FILE_NOT_FOUND,
CURLE_SSH,
CURLE_SSL_SHUTDOWN_FAILED,
CURLE_AGAIN,
CURLE_SSL_CRL_BADFILE,
CURLE_SSL_ISSUER_ERROR,
CURLE_FTP_PRET_FAILED,
CURLE_RTSP_CSEQ_ERROR,
CURLE_RTSP_SESSION_ERROR,
CURLE_FTP_BAD_FILE_LIST,
CURLE_CHUNK_FAILED,
CURLE_NO_CONNECTION_AVAILABLE,
CURLE_SSL_PINNEDPUBKEYNOTMATCH,
CURLE_SSL_INVALIDCERTSTATUS,
CURL_LAST
} CURLcode;
enum {
CURLE_OBSOLETE16 = CURLE_HTTP2,
CURLE_OBSOLETE10 = CURLE_FTP_ACCEPT_FAILED,
CURLE_OBSOLETE12 = CURLE_FTP_ACCEPT_TIMEOUT,
CURLOPT_ENCODING = CURLOPT_ACCEPT_ENCODING,
CURLE_UNKNOWN_TELNET_OPTION = CURLE_UNKNOWN_OPTION,
CURLE_SSL_PEER_CERTIFICATE = CURLE_PEER_FAILED_VERIFICATION,
CURLE_OBSOLETE = CURLE_OBSOLETE50,
CURLE_BAD_PASSWORD_ENTERED = CURLE_OBSOLETE46,
CURLE_BAD_CALLING_ORDER = CURLE_OBSOLETE44,
CURLE_FTP_USER_PASSWORD_INCORRECT = CURLE_OBSOLETE10,
CURLE_FTP_CANT_RECONNECT = CURLE_OBSOLETE16,
CURLE_FTP_COULDNT_GET_SIZE = CURLE_OBSOLETE32,
CURLE_FTP_COULDNT_SET_ASCII = CURLE_OBSOLETE29,
CURLE_FTP_WEIRD_USER_REPLY = CURLE_OBSOLETE12,
CURLE_FTP_WRITE_ERROR = CURLE_OBSOLETE20,
CURLE_LIBRARY_NOT_FOUND = CURLE_OBSOLETE40,
CURLE_MALFORMAT_USER = CURLE_OBSOLETE24,
CURLE_SHARE_IN_USE = CURLE_OBSOLETE57,
CURLE_URL_MALFORMAT_USER = CURLE_NOT_BUILT_IN,
CURLE_FTP_ACCESS_DENIED = CURLE_REMOTE_ACCESS_DENIED,
CURLE_FTP_COULDNT_SET_BINARY = CURLE_FTP_COULDNT_SET_TYPE,
CURLE_FTP_QUOTE_ERROR = CURLE_QUOTE_ERROR,
CURLE_TFTP_DISKFULL = CURLE_REMOTE_DISK_FULL,
CURLE_TFTP_EXISTS = CURLE_REMOTE_FILE_EXISTS,
CURLE_HTTP_RANGE_ERROR = CURLE_RANGE_ERROR,
CURLE_FTP_SSL_FAILED = CURLE_USE_SSL_FAILED,
CURLE_OPERATION_TIMEOUTED = CURLE_OPERATION_TIMEDOUT,
CURLE_HTTP_NOT_FOUND = CURLE_HTTP_RETURNED_ERROR,
CURLE_HTTP_PORT_FAILED = CURLE_INTERFACE_FAILED,
CURLE_FTP_COULDNT_STOR_FILE = CURLE_UPLOAD_FAILED,
CURLE_FTP_PARTIAL_FILE = CURLE_PARTIAL_FILE,
CURLE_FTP_BAD_DOWNLOAD_RESUME = CURLE_BAD_DOWNLOAD_RESUME,
CURLE_ALREADY_COMPLETE = 99999,
CURLOPT_FILE = CURLOPT_WRITEDATA,
CURLOPT_INFILE = CURLOPT_READDATA,
CURLOPT_WRITEHEADER = CURLOPT_HEADERDATA,
CURLOPT_WRITEINFO = CURLOPT_OBSOLETE40,
CURLOPT_CLOSEPOLICY = CURLOPT_OBSOLETE72,
};
typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);
typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl,
void *ssl_ctx,
void *userptr);
typedef enum {
CURLPROXY_HTTP = 0,
CURLPROXY_HTTP_1_0 = 1,
CURLPROXY_SOCKS4 = 4,
CURLPROXY_SOCKS5 = 5,
CURLPROXY_SOCKS4A = 6,
CURLPROXY_SOCKS5_HOSTNAME = 7
} curl_proxytype;
enum {
CURLAUTH_NONE = ((unsigned long)0),
CURLAUTH_BASIC = (((unsigned long)1)<<0),
CURLAUTH_DIGEST = (((unsigned long)1)<<1),
CURLAUTH_NEGOTIATE = (((unsigned long)1)<<2),
CURLAUTH_GSSNEGOTIATE = CURLAUTH_NEGOTIATE,
CURLAUTH_NTLM = (((unsigned long)1)<<3),
CURLAUTH_DIGEST_IE = (((unsigned long)1)<<4),
CURLAUTH_NTLM_WB = (((unsigned long)1)<<5),
CURLAUTH_ONLY = (((unsigned long)1)<<31),
CURLAUTH_ANY = (~CURLAUTH_DIGEST_IE),
CURLAUTH_ANYSAFE = (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)),
};
enum {
CURLSSH_AUTH_ANY = ~0,
CURLSSH_AUTH_NONE = 0,
CURLSSH_AUTH_PUBLICKEY = (1<<0),
CURLSSH_AUTH_PASSWORD = (1<<1),
CURLSSH_AUTH_HOST = (1<<2),
CURLSSH_AUTH_KEYBOARD = (1<<3),
CURLSSH_AUTH_AGENT = (1<<4),
CURLSSH_AUTH_DEFAULT = CURLSSH_AUTH_ANY,
};
enum {
CURLGSSAPI_DELEGATION_NONE = 0,
CURLGSSAPI_DELEGATION_POLICY_FLAG = (1<<0),
CURLGSSAPI_DELEGATION_FLAG = (1<<1),
CURL_ERROR_SIZE = 256,
};
enum curl_khtype {
CURLKHTYPE_UNKNOWN,
CURLKHTYPE_RSA1,
CURLKHTYPE_RSA,
CURLKHTYPE_DSS
};
struct curl_khkey {
const char *key;
size_t len;
enum curl_khtype keytype;
};
enum curl_khstat {
CURLKHSTAT_FINE_ADD_TO_FILE,
CURLKHSTAT_FINE,
CURLKHSTAT_REJECT,
CURLKHSTAT_DEFER,
CURLKHSTAT_LAST
};
enum curl_khmatch {
CURLKHMATCH_OK,
CURLKHMATCH_MISMATCH,
CURLKHMATCH_MISSING,
CURLKHMATCH_LAST
};
typedef int
(*curl_sshkeycallback) (CURL *easy,
const struct curl_khkey *knownkey,
const struct curl_khkey *foundkey,
enum curl_khmatch,
void *clientp);
typedef enum {
CURLUSESSL_NONE,
CURLUSESSL_TRY,
CURLUSESSL_CONTROL,
CURLUSESSL_ALL,
CURLUSESSL_LAST
} curl_usessl;
enum {
CURLSSLOPT_ALLOW_BEAST = (1<<0),
CURLSSLOPT_NO_REVOKE = (1<<1),
CURLFTPSSL_NONE = CURLUSESSL_NONE,
CURLFTPSSL_TRY = CURLUSESSL_TRY,
CURLFTPSSL_CONTROL = CURLUSESSL_CONTROL,
CURLFTPSSL_ALL = CURLUSESSL_ALL,
CURLFTPSSL_LAST = CURLUSESSL_LAST,
};
typedef enum {
CURLFTPSSL_CCC_NONE,
CURLFTPSSL_CCC_PASSIVE,
CURLFTPSSL_CCC_ACTIVE,
CURLFTPSSL_CCC_LAST
} curl_ftpccc;
typedef enum {
CURLFTPAUTH_DEFAULT,
CURLFTPAUTH_SSL,
CURLFTPAUTH_TLS,
CURLFTPAUTH_LAST
} curl_ftpauth;
typedef enum {
CURLFTP_CREATE_DIR_NONE,
CURLFTP_CREATE_DIR,
CURLFTP_CREATE_DIR_RETRY,
CURLFTP_CREATE_DIR_LAST
} curl_ftpcreatedir;
typedef enum {
CURLFTPMETHOD_DEFAULT,
CURLFTPMETHOD_MULTICWD,
CURLFTPMETHOD_NOCWD,
CURLFTPMETHOD_SINGLECWD,
CURLFTPMETHOD_LAST
} curl_ftpmethod;
enum {
CURLHEADER_UNIFIED = 0,
CURLHEADER_SEPARATE = (1<<0),
};
enum {
CURLPROTO_HTTP = (1<<0),
CURLPROTO_HTTPS = (1<<1),
CURLPROTO_FTP = (1<<2),
CURLPROTO_FTPS = (1<<3),
CURLPROTO_SCP = (1<<4),
CURLPROTO_SFTP = (1<<5),
CURLPROTO_TELNET = (1<<6),
CURLPROTO_LDAP = (1<<7),
CURLPROTO_LDAPS = (1<<8),
CURLPROTO_DICT = (1<<9),
CURLPROTO_FILE = (1<<10),
CURLPROTO_TFTP = (1<<11),
CURLPROTO_IMAP = (1<<12),
CURLPROTO_IMAPS = (1<<13),
CURLPROTO_POP3 = (1<<14),
CURLPROTO_POP3S = (1<<15),
CURLPROTO_SMTP = (1<<16),
CURLPROTO_SMTPS = (1<<17),
CURLPROTO_RTSP = (1<<18),
CURLPROTO_RTMP = (1<<19),
CURLPROTO_RTMPT = (1<<20),
CURLPROTO_RTMPE = (1<<21),
CURLPROTO_RTMPTE = (1<<22),
CURLPROTO_RTMPS = (1<<23),
CURLPROTO_RTMPTS = (1<<24),
CURLPROTO_GOPHER = (1<<25),
CURLPROTO_SMB = (1<<26),
CURLPROTO_SMBS = (1<<27),
CURLPROTO_ALL = (~0),
CURLOPTTYPE_LONG = 0,
CURLOPTTYPE_OBJECTPOINT = 10000,
CURLOPTTYPE_STRINGPOINT = 10000,
CURLOPTTYPE_FUNCTIONPOINT = 20000,
CURLOPTTYPE_OFF_T = 30000,
};
enum {
CURL_HTTP_VERSION_NONE,
CURL_HTTP_VERSION_1_0,
CURL_HTTP_VERSION_1_1,
CURL_HTTP_VERSION_2_0,
CURL_HTTP_VERSION_LAST
};
enum {
CURL_RTSPREQ_NONE,
CURL_RTSPREQ_OPTIONS,
CURL_RTSPREQ_DESCRIBE,
CURL_RTSPREQ_ANNOUNCE,
CURL_RTSPREQ_SETUP,
CURL_RTSPREQ_PLAY,
CURL_RTSPREQ_PAUSE,
CURL_RTSPREQ_TEARDOWN,
CURL_RTSPREQ_GET_PARAMETER,
CURL_RTSPREQ_SET_PARAMETER,
CURL_RTSPREQ_RECORD,
CURL_RTSPREQ_RECEIVE,
CURL_RTSPREQ_LAST
};
enum CURL_NETRC_OPTION {
CURL_NETRC_IGNORED,
CURL_NETRC_OPTIONAL,
CURL_NETRC_REQUIRED,
CURL_NETRC_LAST
};
enum {
CURL_SSLVERSION_DEFAULT,
CURL_SSLVERSION_TLSv1,
CURL_SSLVERSION_SSLv2,
CURL_SSLVERSION_SSLv3,
CURL_SSLVERSION_TLSv1_0,
CURL_SSLVERSION_TLSv1_1,
CURL_SSLVERSION_TLSv1_2,
CURL_SSLVERSION_LAST
};
enum CURL_TLSAUTH {
CURL_TLSAUTH_NONE,
CURL_TLSAUTH_SRP,
CURL_TLSAUTH_LAST
};
enum {
CURL_REDIR_GET_ALL = 0,
CURL_REDIR_POST_301 = 1,
CURL_REDIR_POST_302 = 2,
CURL_REDIR_POST_303 = 4,
CURL_REDIR_POST_ALL = (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303),
};
typedef enum {
CURL_TIMECOND_NONE,
CURL_TIMECOND_IFMODSINCE,
CURL_TIMECOND_IFUNMODSINCE,
CURL_TIMECOND_LASTMOD,
CURL_TIMECOND_LAST
} curl_TimeCond;
int (curl_strequal)(const char *s1, const char *s2);
int (curl_strnequal)(const char *s1, const char *s2, size_t n);
typedef enum {
CURLFORM_NOTHING,
CURLFORM_COPYNAME,
CURLFORM_PTRNAME,
CURLFORM_NAMELENGTH,
CURLFORM_COPYCONTENTS,
CURLFORM_PTRCONTENTS,
CURLFORM_CONTENTSLENGTH,
CURLFORM_FILECONTENT,
CURLFORM_ARRAY,
CURLFORM_OBSOLETE,
CURLFORM_FILE,
CURLFORM_BUFFER,
CURLFORM_BUFFERPTR,
CURLFORM_BUFFERLENGTH,
CURLFORM_CONTENTTYPE,
CURLFORM_CONTENTHEADER,
CURLFORM_FILENAME,
CURLFORM_END,
CURLFORM_OBSOLETE2,
CURLFORM_STREAM,
CURLFORM_CONTENTLEN,
CURLFORM_LASTENTRY
} CURLformoption;
struct curl_forms {
CURLformoption option;
const char *value;
};
typedef enum {
CURL_FORMADD_OK,
CURL_FORMADD_MEMORY,
CURL_FORMADD_OPTION_TWICE,
CURL_FORMADD_NULL,
CURL_FORMADD_UNKNOWN_OPTION,
CURL_FORMADD_INCOMPLETE,
CURL_FORMADD_ILLEGAL_ARRAY,
CURL_FORMADD_DISABLED,
CURL_FORMADD_LAST
} CURLFORMcode;
CURLFORMcode curl_formadd(struct curl_httppost **httppost, struct curl_httppost **last_post, ...);
typedef size_t (*curl_formget_callback)(void *arg, const char *buf, size_t len);
int curl_formget(struct curl_httppost *form, void *arg, curl_formget_callback append);
void curl_formfree(struct curl_httppost *form);
char *curl_version(void);
char *curl_easy_escape(CURL *handle, const char *string, int length);
char *curl_escape(const char *string, int length);
char *curl_easy_unescape(CURL *handle, const char *string, int length, int *outlength);
char *curl_unescape(const char *string, int length);
void curl_free(void *p);
CURLcode curl_global_init(long flags);
CURLcode curl_global_init_mem(long flags,
curl_malloc_callback m,
curl_free_callback f,
curl_realloc_callback r,
curl_strdup_callback s,
curl_calloc_callback c);
void curl_global_cleanup(void);
struct curl_slist {
char *data;
struct curl_slist *next;
};
struct curl_slist *curl_slist_append(struct curl_slist *, const char *);
void curl_slist_free_all(struct curl_slist *);
time_t curl_getdate(const char *p, const time_t *unused);
struct curl_certinfo {
int num_of_certs;
struct curl_slist **certinfo;
};
typedef enum {
CURLSSLBACKEND_NONE = 0,
CURLSSLBACKEND_OPENSSL = 1,
CURLSSLBACKEND_GNUTLS = 2,
CURLSSLBACKEND_NSS = 3,
CURLSSLBACKEND_OBSOLETE4 = 4,
CURLSSLBACKEND_GSKIT = 5,
CURLSSLBACKEND_POLARSSL = 6,
CURLSSLBACKEND_CYASSL = 7,
CURLSSLBACKEND_SCHANNEL = 8,
CURLSSLBACKEND_DARWINSSL = 9,
CURLSSLBACKEND_AXTLS = 10,
CURLSSLBACKEND_MBEDTLS = 11
} curl_sslbackend;
struct curl_tlssessioninfo {
curl_sslbackend backend;
void *internals;
};
enum {
CURLINFO_STRING = 0x100000,
CURLINFO_LONG = 0x200000,
CURLINFO_DOUBLE = 0x300000,
CURLINFO_SLIST = 0x400000,
CURLINFO_SOCKET = 0x500000,
CURLINFO_MASK = 0x0fffff,
CURLINFO_TYPEMASK = 0xf00000,
};
typedef enum {
CURLINFO_NONE,
CURLINFO_EFFECTIVE_URL = 0x100000 + 1,
CURLINFO_RESPONSE_CODE = 0x200000 + 2,
CURLINFO_TOTAL_TIME = 0x300000 + 3,
CURLINFO_NAMELOOKUP_TIME = 0x300000 + 4,
CURLINFO_CONNECT_TIME = 0x300000 + 5,
CURLINFO_PRETRANSFER_TIME = 0x300000 + 6,
CURLINFO_SIZE_UPLOAD = 0x300000 + 7,
CURLINFO_SIZE_DOWNLOAD = 0x300000 + 8,
CURLINFO_SPEED_DOWNLOAD = 0x300000 + 9,
CURLINFO_SPEED_UPLOAD = 0x300000 + 10,
CURLINFO_HEADER_SIZE = 0x200000 + 11,
CURLINFO_REQUEST_SIZE = 0x200000 + 12,
CURLINFO_SSL_VERIFYRESULT = 0x200000 + 13,
CURLINFO_FILETIME = 0x200000 + 14,
CURLINFO_CONTENT_LENGTH_DOWNLOAD = 0x300000 + 15,
CURLINFO_CONTENT_LENGTH_UPLOAD = 0x300000 + 16,
CURLINFO_STARTTRANSFER_TIME = 0x300000 + 17,
CURLINFO_CONTENT_TYPE = 0x100000 + 18,
CURLINFO_REDIRECT_TIME = 0x300000 + 19,
CURLINFO_REDIRECT_COUNT = 0x200000 + 20,
CURLINFO_PRIVATE = 0x100000 + 21,
CURLINFO_HTTP_CONNECTCODE = 0x200000 + 22,
CURLINFO_HTTPAUTH_AVAIL = 0x200000 + 23,
CURLINFO_PROXYAUTH_AVAIL = 0x200000 + 24,
CURLINFO_OS_ERRNO = 0x200000 + 25,
CURLINFO_NUM_CONNECTS = 0x200000 + 26,
CURLINFO_SSL_ENGINES = 0x400000 + 27,
CURLINFO_COOKIELIST = 0x400000 + 28,
CURLINFO_LASTSOCKET = 0x200000 + 29,
CURLINFO_FTP_ENTRY_PATH = 0x100000 + 30,
CURLINFO_REDIRECT_URL = 0x100000 + 31,
CURLINFO_PRIMARY_IP = 0x100000 + 32,
CURLINFO_APPCONNECT_TIME = 0x300000 + 33,
CURLINFO_CERTINFO = 0x400000 + 34,
CURLINFO_CONDITION_UNMET = 0x200000 + 35,
CURLINFO_RTSP_SESSION_ID = 0x100000 + 36,
CURLINFO_RTSP_CLIENT_CSEQ = 0x200000 + 37,
CURLINFO_RTSP_SERVER_CSEQ = 0x200000 + 38,
CURLINFO_RTSP_CSEQ_RECV = 0x200000 + 39,
CURLINFO_PRIMARY_PORT = 0x200000 + 40,
CURLINFO_LOCAL_IP = 0x100000 + 41,
CURLINFO_LOCAL_PORT = 0x200000 + 42,
CURLINFO_TLS_SESSION = 0x400000 + 43,
CURLINFO_ACTIVESOCKET = 0x500000 + 44,
CURLINFO_LASTONE = 44
} CURLINFO;
enum {
CURLINFO_HTTP_CODE = CURLINFO_RESPONSE_CODE,
};
typedef enum {
CURLCLOSEPOLICY_NONE,
CURLCLOSEPOLICY_OLDEST,
CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
CURLCLOSEPOLICY_LEAST_TRAFFIC,
CURLCLOSEPOLICY_SLOWEST,
CURLCLOSEPOLICY_CALLBACK,
CURLCLOSEPOLICY_LAST
} curl_closepolicy;
enum {
CURL_GLOBAL_SSL = (1<<0),
CURL_GLOBAL_WIN32 = (1<<1),
CURL_GLOBAL_ALL = (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32),
CURL_GLOBAL_NOTHING = 0,
CURL_GLOBAL_DEFAULT = CURL_GLOBAL_ALL,
CURL_GLOBAL_ACK_EINTR = (1<<2),
};
typedef enum {
CURL_LOCK_DATA_NONE = 0,
CURL_LOCK_DATA_SHARE,
CURL_LOCK_DATA_COOKIE,
CURL_LOCK_DATA_DNS,
CURL_LOCK_DATA_SSL_SESSION,
CURL_LOCK_DATA_CONNECT,
CURL_LOCK_DATA_LAST
} curl_lock_data;
typedef enum {
CURL_LOCK_ACCESS_NONE = 0,
CURL_LOCK_ACCESS_SHARED = 1,
CURL_LOCK_ACCESS_SINGLE = 2,
CURL_LOCK_ACCESS_LAST
} curl_lock_access;
typedef void (*curl_lock_function)(CURL *handle,
curl_lock_data data,
curl_lock_access locktype,
void *userptr);
typedef void (*curl_unlock_function)(CURL *handle,
curl_lock_data data,
void *userptr);
typedef struct CURLSH CURLSH;
typedef enum {
CURLSHE_OK,
CURLSHE_BAD_OPTION,
CURLSHE_IN_USE,
CURLSHE_INVALID,
CURLSHE_NOMEM,
CURLSHE_NOT_BUILT_IN,
CURLSHE_LAST
} CURLSHcode;
typedef enum {
CURLSHOPT_NONE,
CURLSHOPT_SHARE,
CURLSHOPT_UNSHARE,
CURLSHOPT_LOCKFUNC,
CURLSHOPT_UNLOCKFUNC,
CURLSHOPT_USERDATA,
CURLSHOPT_LAST
} CURLSHoption;
CURLSH *curl_share_init(void);
CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
CURLSHcode curl_share_cleanup(CURLSH *);
typedef enum {
CURLVERSION_FIRST,
CURLVERSION_SECOND,
CURLVERSION_THIRD,
CURLVERSION_FOURTH,
CURLVERSION_LAST
} CURLversion;
enum {
CURLVERSION_NOW = CURLVERSION_FOURTH,
};
typedef struct {
CURLversion age;
const char *version;
unsigned int version_num;
const char *host;
int features;
const char *ssl_version;
long ssl_version_num;
const char *libz_version;
const char * const *protocols;
const char *ares;
int ares_num;
const char *libidn;
int iconv_ver_num;
const char *libssh_version;
} curl_version_info_data;
enum {
CURL_VERSION_IPV6 = (1<<0),
CURL_VERSION_KERBEROS4 = (1<<1),
CURL_VERSION_SSL = (1<<2),
CURL_VERSION_LIBZ = (1<<3),
CURL_VERSION_NTLM = (1<<4),
CURL_VERSION_GSSNEGOTIATE = (1<<5),
CURL_VERSION_DEBUG = (1<<6),
CURL_VERSION_ASYNCHDNS = (1<<7),
CURL_VERSION_SPNEGO = (1<<8),
CURL_VERSION_LARGEFILE = (1<<9),
CURL_VERSION_IDN = (1<<10),
CURL_VERSION_SSPI = (1<<11),
CURL_VERSION_CONV = (1<<12),
CURL_VERSION_CURLDEBUG = (1<<13),
CURL_VERSION_TLSAUTH_SRP = (1<<14),
CURL_VERSION_NTLM_WB = (1<<15),
CURL_VERSION_HTTP2 = (1<<16),
CURL_VERSION_GSSAPI = (1<<17),
CURL_VERSION_KERBEROS5 = (1<<18),
CURL_VERSION_UNIX_SOCKETS = (1<<19),
};
curl_version_info_data *curl_version_info(CURLversion);
// easy.h --------------------------------------------------------------------
const char *curl_easy_strerror(CURLcode);
const char *curl_share_strerror(CURLSHcode);
CURLcode curl_easy_pause(CURL *handle, int bitmask);
enum {
CURLPAUSE_RECV = (1<<0),
CURLPAUSE_RECV_CONT = (0),
CURLPAUSE_SEND = (1<<2),
CURLPAUSE_SEND_CONT = (0),
CURLPAUSE_ALL = (CURLPAUSE_RECV|CURLPAUSE_SEND),
CURLPAUSE_CONT = (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT),
};
CURL *curl_easy_init(void);
CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
CURLcode curl_easy_perform(CURL *curl);
void curl_easy_cleanup(CURL *curl);
CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
CURL* curl_easy_duphandle(CURL *curl);
void curl_easy_reset(CURL *curl);
CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
size_t *n);
CURLcode curl_easy_send(CURL *curl, const void *buffer,
size_t buflen, size_t *n);
// multi.h -------------------------------------------------------------------
typedef struct CURLM CURLM;
typedef enum {
CURLM_CALL_MULTI_PERFORM = -1,
CURLM_OK,
CURLM_BAD_HANDLE,
CURLM_BAD_EASY_HANDLE,
CURLM_OUT_OF_MEMORY,
CURLM_INTERNAL_ERROR,
CURLM_BAD_SOCKET,
CURLM_UNKNOWN_OPTION,
CURLM_ADDED_ALREADY,
CURLM_LAST
} CURLMcode;
enum {
CURLM_CALL_MULTI_SOCKET = CURLM_CALL_MULTI_PERFORM,
CURLPIPE_NOTHING = 0,
CURLPIPE_HTTP1 = 1,
CURLPIPE_MULTIPLEX = 2,
};
typedef enum {
CURLMSG_NONE,
CURLMSG_DONE,
CURLMSG_LAST
} CURLMSG;
struct CURLMsg {
CURLMSG msg;
CURL *easy_handle;
union {
void *whatever;
CURLcode result;
} data;
};
typedef struct CURLMsg CURLMsg;
enum {
CURL_WAIT_POLLIN = 0x0001,
CURL_WAIT_POLLPRI = 0x0002,
CURL_WAIT_POLLOUT = 0x0004,
};
struct curl_waitfd {
curl_socket_t fd;
short events;
short revents;
};
CURLM *curl_multi_init(void);
CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *curl_handle);
CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *curl_handle);
CURLMcode curl_multi_fdset(CURLM *multi_handle,
curl_fd_set *read_fd_set,
curl_fd_set *write_fd_set,
curl_fd_set *exc_fd_set,
int *max_fd);
CURLMcode curl_multi_wait(CURLM *multi_handle,
struct curl_waitfd extra_fds[],
unsigned int extra_nfds,
int timeout_ms,
int *ret);
CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
CURLMcode curl_multi_cleanup(CURLM *multi_handle);
CURLMsg *curl_multi_info_read(CURLM *multi_handle, int *msgs_in_queue);
const char *curl_multi_strerror(CURLMcode);
enum {
CURL_POLL_NONE = 0,
CURL_POLL_IN = 1,
CURL_POLL_OUT = 2,
CURL_POLL_INOUT = 3,
CURL_POLL_REMOVE = 4,
CURL_CSELECT_IN = 0x01,
CURL_CSELECT_OUT = 0x02,
CURL_CSELECT_ERR = 0x04,
};
typedef int (*curl_socket_callback)(CURL *easy, curl_socket_t s, int what, void *userp, void *socketp);
typedef int (*curl_multi_timer_callback)(CURLM *multi, long timeout_ms, void *userp);
CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s, int *running_handles);
CURLMcode curl_multi_socket_action(CURLM *multi_handle, curl_socket_t s, int ev_bitmask, int *running_handles);
CURLMcode curl_multi_socket_all(CURLM *multi_handle, int *running_handles);
CURLMcode curl_multi_timeout(CURLM *multi_handle, long *milliseconds);
typedef enum {
CURLMOPT_SOCKETFUNCTION = 20000 + 1,
CURLMOPT_SOCKETDATA = 10000 + 2,
CURLMOPT_PIPELINING = 0 + 3,
CURLMOPT_TIMERFUNCTION = 20000 + 4,
CURLMOPT_TIMERDATA = 10000 + 5,
CURLMOPT_MAXCONNECTS = 0 + 6,
CURLMOPT_MAX_HOST_CONNECTIONS = 0 + 7,
CURLMOPT_MAX_PIPELINE_LENGTH = 0 + 8,
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE = 30000 + 9,
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE = 30000 + 10,
CURLMOPT_PIPELINING_SITE_BL = 10000 + 11,
CURLMOPT_PIPELINING_SERVER_BL = 10000 + 12,
CURLMOPT_MAX_TOTAL_CONNECTIONS = 0 + 13,
CURLMOPT_PUSHFUNCTION = 20000 + 14,
CURLMOPT_PUSHDATA = 10000 + 15,
CURLMOPT_LASTENTRY
} CURLMoption;
CURLMcode curl_multi_setopt(CURLM *multi_handle, CURLMoption option, ...);
CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd, void *sockp);
enum {
CURL_PUSH_OK = 0,
CURL_PUSH_DENY = 1,
};
struct curl_pushheaders;
char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num);
char *curl_pushheader_byname(struct curl_pushheaders *h, const char *name);
typedef int (*curl_push_callback)(CURL *parent,
CURL *easy,
size_t num_headers,
struct curl_pushheaders *headers,
void *userp);
]]