Skip to main content

curl_sys/
lib.rs

1#![allow(bad_style)]
2#![doc(html_root_url = "https://docs.rs/nktnet-curl-sys/0.4.91-nktnet.2")]
3
4// These `extern crate` are required for conditional linkages of curl.
5#[cfg(link_aws_lc)]
6extern crate aws_lc_sys;
7#[cfg(link_libnghttp2)]
8extern crate libnghttp2_sys;
9#[cfg(link_libz)]
10extern crate libz_sys;
11#[cfg(link_libnghttp3)]
12extern crate nghttp3_sys;
13#[cfg(link_libngtcp2)]
14extern crate ngtcp2_sys;
15#[cfg(link_openssl)]
16extern crate openssl_sys;
17#[cfg(feature = "rustls")]
18extern crate rustls_ffi;
19
20use libc::c_ulong;
21use libc::{c_char, c_double, c_int, c_long, c_short, c_uint, c_void, size_t, time_t};
22
23#[cfg(unix)]
24pub use libc::fd_set;
25#[cfg(windows)]
26pub use windows_sys::Win32::Networking::WinSock::FD_SET as fd_set;
27#[cfg(windows)]
28use windows_sys::Win32::Networking::WinSock::SOCKADDR;
29
30#[cfg(target_env = "msvc")]
31#[doc(hidden)]
32pub type __enum_ty = libc::c_int;
33#[cfg(not(target_env = "msvc"))]
34#[doc(hidden)]
35pub type __enum_ty = libc::c_uint;
36
37pub type CURLINFO = __enum_ty;
38pub type CURLoption = __enum_ty;
39pub type CURLcode = __enum_ty;
40pub type CURLversion = __enum_ty;
41pub type curl_off_t = i64;
42
43pub enum CURL {}
44
45#[cfg(unix)]
46pub type curl_socket_t = libc::c_int;
47#[cfg(unix)]
48pub const CURL_SOCKET_BAD: curl_socket_t = -1;
49#[cfg(all(windows, target_pointer_width = "32"))]
50pub type curl_socket_t = libc::c_uint;
51#[cfg(all(windows, target_pointer_width = "64"))]
52pub type curl_socket_t = u64;
53#[cfg(windows)]
54pub const CURL_SOCKET_BAD: curl_socket_t = !0;
55
56pub enum curl_httppost {
57    // Note that this changed in some versions of libcurl, so we currently don't
58    // bind the fields as they're apparently not stable.
59    // pub next: *mut curl_httppost,
60    // pub name: *mut c_char,
61    // pub namelength: c_long,
62    // pub contents: *mut c_char,
63    // pub contentslength: c_long,
64    // pub buffer: *mut c_char,
65    // pub bufferlength: c_long,
66    // pub contenttype: *mut c_char,
67    // pub contentheader: *mut curl_slist,
68    // pub more: *mut curl_httppost,
69    // pub flags: c_long,
70    // pub showfilename: *mut c_char,
71    // pub userp: *mut c_void,
72}
73
74// pub const HTTPPOST_FILENAME: c_long = 1 << 0;
75// pub const HTTPPOST_READFILE: c_long = 1 << 1;
76// pub const HTTPPOST_PTRNAME: c_long = 1 << 2;
77// pub const HTTPPOST_PTRCONTENTS: c_long = 1 << 3;
78// pub const HTTPPOST_BUFFER: c_long = 1 << 4;
79// pub const HTTPPOST_PTRBUFFER: c_long = 1 << 5;
80// pub const HTTPPOST_CALLBACK: c_long = 1 << 6;
81
82pub type curl_progress_callback =
83    extern "C" fn(*mut c_void, c_double, c_double, c_double, c_double) -> c_int;
84// pub type curl_xferinfo_callback = extern fn(*mut c_void,
85//                                             curl_off_t,
86//                                             curl_off_t,
87//                                             curl_off_t,
88//                                             curl_off_t) -> c_int;
89
90pub const CURL_WRITEFUNC_PAUSE: size_t = 0x10000001;
91
92pub type curl_write_callback = extern "C" fn(*mut c_char, size_t, size_t, *mut c_void) -> size_t;
93
94pub type curlfiletype = __enum_ty;
95pub const CURLFILETYPE_FILE: curlfiletype = 0;
96pub const CURLFILETYPE_DIRECTORY: curlfiletype = 1;
97pub const CURLFILETYPE_SYMLINK: curlfiletype = 2;
98pub const CURLFILETYPE_DEVICE_BLOCK: curlfiletype = 3;
99pub const CURLFILETYPE_DEVICE_CHAR: curlfiletype = 4;
100pub const CURLFILETYPE_NAMEDPIPE: curlfiletype = 5;
101pub const CURLFILETYPE_SOCKET: curlfiletype = 6;
102pub const CURLFILETYPE_DOOR: curlfiletype = 7;
103pub const CURLFILETYPE_UNKNOWN: curlfiletype = 8;
104
105pub const CURLFINFOFLAG_KNOWN_FILENAME: c_uint = 1 << 0;
106pub const CURLFINFOFLAG_KNOWN_FILETYPE: c_uint = 1 << 1;
107pub const CURLFINFOFLAG_KNOWN_TIME: c_uint = 1 << 2;
108pub const CURLFINFOFLAG_KNOWN_PERM: c_uint = 1 << 3;
109pub const CURLFINFOFLAG_KNOWN_UID: c_uint = 1 << 4;
110pub const CURLFINFOFLAG_KNOWN_GID: c_uint = 1 << 5;
111pub const CURLFINFOFLAG_KNOWN_SIZE: c_uint = 1 << 6;
112pub const CURLFINFOFLAG_KNOWN_HLINKCOUNT: c_uint = 1 << 7;
113
114#[repr(C)]
115pub struct curl_fileinfo {
116    pub filename: *mut c_char,
117    pub filetype: curlfiletype,
118    pub time: time_t,
119    pub perm: c_uint,
120    pub uid: c_int,
121    pub gid: c_int,
122    pub size: curl_off_t,
123    pub hardlinks: c_long,
124
125    pub strings_time: *mut c_char,
126    pub strings_perm: *mut c_char,
127    pub strings_user: *mut c_char,
128    pub strings_group: *mut c_char,
129    pub strings_target: *mut c_char,
130
131    pub flags: c_uint,
132    pub b_data: *mut c_char,
133    pub b_size: size_t,
134    pub b_used: size_t,
135}
136
137pub const CURL_BLOB_NOCOPY: c_uint = 0;
138pub const CURL_BLOB_COPY: c_uint = 1;
139
140#[repr(C)]
141pub struct curl_blob {
142    pub data: *mut c_void,
143    pub len: size_t,
144    pub flags: c_uint,
145}
146
147pub const CURL_CHUNK_BGN_FUNC_OK: c_long = 0;
148pub const CURL_CHUNK_BGN_FUNC_FAIL: c_long = 1;
149pub const CURL_CHUNK_BGN_FUNC_SKIP: c_long = 2;
150pub type curl_chunk_bgn_callback = extern "C" fn(*const c_void, *mut c_void, c_int) -> c_long;
151
152pub const CURL_CHUNK_END_FUNC_OK: c_long = 0;
153pub const CURL_CHUNK_END_FUNC_FAIL: c_long = 1;
154pub type curl_chunk_end_callback = extern "C" fn(*mut c_void) -> c_long;
155
156pub const CURL_FNMATCHFUNC_MATCH: c_int = 0;
157pub const CURL_FNMATCHFUNC_NOMATCH: c_int = 1;
158pub const CURL_FNMATCHFUNC_FAIL: c_int = 2;
159pub type curl_fnmatch_callback = extern "C" fn(*mut c_void, *const c_char, *const c_char) -> c_int;
160
161pub const CURL_SEEKFUNC_OK: c_int = 0;
162pub const CURL_SEEKFUNC_FAIL: c_int = 1;
163pub const CURL_SEEKFUNC_CANTSEEK: c_int = 2;
164pub type curl_seek_callback = extern "C" fn(*mut c_void, curl_off_t, c_int) -> c_int;
165
166pub const CURL_READFUNC_ABORT: size_t = 0x10000000;
167pub const CURL_READFUNC_PAUSE: size_t = 0x10000001;
168pub type curl_read_callback = extern "C" fn(*mut c_char, size_t, size_t, *mut c_void) -> size_t;
169
170// pub const CURL_SOCKOPT_OK: c_int = 0;
171// pub const CURL_SOCKOPT_ERROR: c_int = 1;
172// pub const CURL_SOCKOPT_ALREADY_CONNECTED: c_int = 2;
173// pub type curl_sockopt_callback = extern fn(*mut c_void,
174//                                            curl_socket_t,
175//                                            curlsocktype) -> c_int;
176
177pub type curlioerr = __enum_ty;
178pub const CURLIOE_OK: curlioerr = 0;
179pub const CURLIOE_UNKNOWNCMD: curlioerr = 1;
180pub const CURLIOE_FAILRESTART: curlioerr = 2;
181
182pub type curliocmd = __enum_ty;
183pub const CURLIOCMD_NOP: curliocmd = 0;
184pub const CURLIOCMD_RESTARTREAD: curliocmd = 1;
185
186pub type curl_ioctl_callback = extern "C" fn(*mut CURL, c_int, *mut c_void) -> curlioerr;
187
188pub type curl_malloc_callback = extern "C" fn(size_t) -> *mut c_void;
189pub type curl_free_callback = extern "C" fn(*mut c_void);
190pub type curl_realloc_callback = extern "C" fn(*mut c_void, size_t) -> *mut c_void;
191pub type curl_strdup_callback = extern "C" fn(*const c_char) -> *mut c_char;
192pub type curl_calloc_callback = extern "C" fn(size_t, size_t) -> *mut c_void;
193
194pub type curl_infotype = __enum_ty;
195pub const CURLINFO_TEXT: curl_infotype = 0;
196pub const CURLINFO_HEADER_IN: curl_infotype = 1;
197pub const CURLINFO_HEADER_OUT: curl_infotype = 2;
198pub const CURLINFO_DATA_IN: curl_infotype = 3;
199pub const CURLINFO_DATA_OUT: curl_infotype = 4;
200pub const CURLINFO_SSL_DATA_IN: curl_infotype = 5;
201pub const CURLINFO_SSL_DATA_OUT: curl_infotype = 6;
202
203pub type curl_debug_callback =
204    extern "C" fn(*mut CURL, curl_infotype, *mut c_char, size_t, *mut c_void) -> c_int;
205
206pub const CURLE_OK: CURLcode = 0;
207pub const CURLE_UNSUPPORTED_PROTOCOL: CURLcode = 1;
208pub const CURLE_FAILED_INIT: CURLcode = 2;
209pub const CURLE_URL_MALFORMAT: CURLcode = 3;
210// pub const CURLE_NOT_BUILT_IN: CURLcode = 4;
211pub const CURLE_COULDNT_RESOLVE_PROXY: CURLcode = 5;
212pub const CURLE_COULDNT_RESOLVE_HOST: CURLcode = 6;
213pub const CURLE_COULDNT_CONNECT: CURLcode = 7;
214pub const CURLE_FTP_WEIRD_SERVER_REPLY: CURLcode = 8;
215pub const CURLE_REMOTE_ACCESS_DENIED: CURLcode = 9;
216// pub const CURLE_FTP_ACCEPT_FAILED: CURLcode = 10;
217pub const CURLE_FTP_WEIRD_PASS_REPLY: CURLcode = 11;
218// pub const CURLE_FTP_ACCEPT_TIMEOUT: CURLcode = 12;
219pub const CURLE_FTP_WEIRD_PASV_REPLY: CURLcode = 13;
220pub const CURLE_FTP_WEIRD_227_FORMAT: CURLcode = 14;
221pub const CURLE_FTP_CANT_GET_HOST: CURLcode = 15;
222pub const CURLE_HTTP2: CURLcode = 16;
223pub const CURLE_FTP_COULDNT_SET_TYPE: CURLcode = 17;
224pub const CURLE_PARTIAL_FILE: CURLcode = 18;
225pub const CURLE_FTP_COULDNT_RETR_FILE: CURLcode = 19;
226pub const CURLE_OBSOLETE20: CURLcode = 20;
227pub const CURLE_QUOTE_ERROR: CURLcode = 21;
228pub const CURLE_HTTP_RETURNED_ERROR: CURLcode = 22;
229pub const CURLE_WRITE_ERROR: CURLcode = 23;
230pub const CURLE_OBSOLETE24: CURLcode = 24;
231pub const CURLE_UPLOAD_FAILED: CURLcode = 25;
232pub const CURLE_READ_ERROR: CURLcode = 26;
233pub const CURLE_OUT_OF_MEMORY: CURLcode = 27;
234pub const CURLE_OPERATION_TIMEDOUT: CURLcode = 28;
235pub const CURLE_OBSOLETE29: CURLcode = 29;
236pub const CURLE_FTP_PORT_FAILED: CURLcode = 30;
237pub const CURLE_FTP_COULDNT_USE_REST: CURLcode = 31;
238pub const CURLE_OBSOLETE32: CURLcode = 32;
239pub const CURLE_RANGE_ERROR: CURLcode = 33;
240pub const CURLE_HTTP_POST_ERROR: CURLcode = 34;
241pub const CURLE_SSL_CONNECT_ERROR: CURLcode = 35;
242pub const CURLE_BAD_DOWNLOAD_RESUME: CURLcode = 36;
243pub const CURLE_FILE_COULDNT_READ_FILE: CURLcode = 37;
244pub const CURLE_LDAP_CANNOT_BIND: CURLcode = 38;
245pub const CURLE_LDAP_SEARCH_FAILED: CURLcode = 39;
246pub const CURLE_OBSOLETE40: CURLcode = 40;
247pub const CURLE_FUNCTION_NOT_FOUND: CURLcode = 41;
248pub const CURLE_ABORTED_BY_CALLBACK: CURLcode = 42;
249pub const CURLE_BAD_FUNCTION_ARGUMENT: CURLcode = 43;
250pub const CURLE_OBSOLETE44: CURLcode = 44;
251pub const CURLE_INTERFACE_FAILED: CURLcode = 45;
252pub const CURLE_OBSOLETE46: CURLcode = 46;
253pub const CURLE_TOO_MANY_REDIRECTS: CURLcode = 47;
254pub const CURLE_UNKNOWN_OPTION: CURLcode = 48;
255pub const CURLE_TELNET_OPTION_SYNTAX: CURLcode = 49;
256pub const CURLE_OBSOLETE50: CURLcode = 50;
257pub const CURLE_PEER_FAILED_VERIFICATION: CURLcode = 60;
258pub const CURLE_GOT_NOTHING: CURLcode = 52;
259pub const CURLE_SSL_ENGINE_NOTFOUND: CURLcode = 53;
260pub const CURLE_SSL_ENGINE_SETFAILED: CURLcode = 54;
261pub const CURLE_SEND_ERROR: CURLcode = 55;
262pub const CURLE_RECV_ERROR: CURLcode = 56;
263pub const CURLE_OBSOLETE57: CURLcode = 57;
264pub const CURLE_SSL_CERTPROBLEM: CURLcode = 58;
265pub const CURLE_SSL_CIPHER: CURLcode = 59;
266pub const CURLE_SSL_CACERT: CURLcode = 60;
267pub const CURLE_BAD_CONTENT_ENCODING: CURLcode = 61;
268pub const CURLE_LDAP_INVALID_URL: CURLcode = 62;
269pub const CURLE_FILESIZE_EXCEEDED: CURLcode = 63;
270pub const CURLE_USE_SSL_FAILED: CURLcode = 64;
271pub const CURLE_SEND_FAIL_REWIND: CURLcode = 65;
272pub const CURLE_SSL_ENGINE_INITFAILED: CURLcode = 66;
273pub const CURLE_LOGIN_DENIED: CURLcode = 67;
274pub const CURLE_TFTP_NOTFOUND: CURLcode = 68;
275pub const CURLE_TFTP_PERM: CURLcode = 69;
276pub const CURLE_REMOTE_DISK_FULL: CURLcode = 70;
277pub const CURLE_TFTP_ILLEGAL: CURLcode = 71;
278pub const CURLE_TFTP_UNKNOWNID: CURLcode = 72;
279pub const CURLE_REMOTE_FILE_EXISTS: CURLcode = 73;
280pub const CURLE_TFTP_NOSUCHUSER: CURLcode = 74;
281pub const CURLE_CONV_FAILED: CURLcode = 75;
282pub const CURLE_CONV_REQD: CURLcode = 76;
283pub const CURLE_SSL_CACERT_BADFILE: CURLcode = 77;
284pub const CURLE_REMOTE_FILE_NOT_FOUND: CURLcode = 78;
285pub const CURLE_SSH: CURLcode = 79;
286pub const CURLE_SSL_SHUTDOWN_FAILED: CURLcode = 80;
287pub const CURLE_AGAIN: CURLcode = 81;
288pub const CURLE_SSL_CRL_BADFILE: CURLcode = 82;
289pub const CURLE_SSL_ISSUER_ERROR: CURLcode = 83;
290pub const CURLE_FTP_PRET_FAILED: CURLcode = 84;
291pub const CURLE_RTSP_CSEQ_ERROR: CURLcode = 85;
292pub const CURLE_RTSP_SESSION_ERROR: CURLcode = 86;
293pub const CURLE_FTP_BAD_FILE_LIST: CURLcode = 87;
294pub const CURLE_CHUNK_FAILED: CURLcode = 88;
295pub const CURLE_NO_CONNECTION_AVAILABLE: CURLcode = 89;
296pub const CURLE_SSL_PINNEDPUBKEYNOTMATCH: CURLcode = 90;
297pub const CURLE_SSL_INVALIDCERTSTATUS: CURLcode = 91;
298pub const CURLE_HTTP2_STREAM: CURLcode = 92;
299pub const CURLE_RECURSIVE_API_CALL: CURLcode = 93;
300
301pub type curl_conv_callback = extern "C" fn(*mut c_char, size_t) -> CURLcode;
302pub type curl_ssl_ctx_callback = extern "C" fn(*mut CURL, *mut c_void, *mut c_void) -> CURLcode;
303
304pub type curl_proxytype = __enum_ty;
305pub const CURLPROXY_HTTP: curl_proxytype = 0;
306pub const CURLPROXY_HTTP_1_0: curl_proxytype = 1;
307pub const CURLPROXY_SOCKS4: curl_proxytype = 4;
308pub const CURLPROXY_SOCKS5: curl_proxytype = 5;
309pub const CURLPROXY_SOCKS4A: curl_proxytype = 6;
310pub const CURLPROXY_SOCKS5_HOSTNAME: curl_proxytype = 7;
311
312pub const CURLAUTH_NONE: c_ulong = 0;
313pub const CURLAUTH_BASIC: c_ulong = 1 << 0;
314pub const CURLAUTH_DIGEST: c_ulong = 1 << 1;
315pub const CURLAUTH_GSSNEGOTIATE: c_ulong = 1 << 2;
316pub const CURLAUTH_NTLM: c_ulong = 1 << 3;
317pub const CURLAUTH_DIGEST_IE: c_ulong = 1 << 4;
318pub const CURLAUTH_NTLM_WB: c_ulong = 1 << 5;
319pub const CURLAUTH_AWS_SIGV4: c_ulong = 1 << 7;
320pub const CURLAUTH_HTTPSIG: c_ulong = 1 << 8;
321// pub const CURLAUTH_ONLY: c_ulong = 1 << 31;
322pub const CURLAUTH_ANY: c_ulong = (!(CURLAUTH_DIGEST_IE | CURLAUTH_HTTPSIG)) & 0xffffffff;
323pub const CURLAUTH_ANYSAFE: c_ulong =
324    (!(CURLAUTH_BASIC | CURLAUTH_DIGEST_IE | CURLAUTH_HTTPSIG)) & 0xffffffff;
325
326pub const CURLHTTPSIG_NONE: c_long = 0;
327pub const CURLHTTPSIG_ED25519: c_long = 1;
328pub const CURLHTTPSIG_HMAC_SHA256: c_long = 2;
329
330// pub const CURLSSH_AUTH_ANY: c_ulong = !0;
331// pub const CURLSSH_AUTH_NONE: c_ulong = 0;
332// pub const CURLSSH_AUTH_PUBLICKEY: c_ulong = 1 << 0;
333// pub const CURLSSH_AUTH_PASSWORD: c_ulong = 1 << 1;
334// pub const CURLSSH_AUTH_HOST: c_ulong = 1 << 2;
335// pub const CURLSSH_AUTH_KEYBOARD: c_ulong = 1 << 3;
336// pub const CURLSSH_AUTH_AGENT: c_ulong = 1 << 4;
337// pub const CURLSSH_AUTH_DEFAULT: c_ulong = CURLSSH_AUTH_ANY;
338
339pub const CURLGSSAPI_DELEGATION_NONE: c_ulong = 0;
340pub const CURLGSSAPI_DELEGATION_POLICY_FLAG: c_ulong = 1 << 0;
341pub const CURLGSSAPI_DELEGATION_FLAG: c_ulong = 1 << 1;
342
343// pub type curl_khtype = __enum_ty;
344// pub const CURLKHTYPE_UNKNOWN: curl_khtype = 0;
345// pub const CURLKHTYPE_RSA1: curl_khtype = 1;
346// pub const CURLKHTYPE_RSA: curl_khtype = 2;
347// pub const CURLKHTYPE_DSS: curl_khtype = 3;
348
349// #[repr(C)]
350// pub struct curl_khkey {
351//     pub key: *const c_char,
352//     pub len: size_t,
353//     pub keytype: curl_khtype,
354// }
355
356// pub type curl_khstat = __enum_ty;
357// pub const CURLKHSTAT_FINE_ADD_TO_FILE: curl_khstat = 0;
358// pub const CURLKHSTAT_FINE: curl_khstat = 1;
359// pub const CURLKHSTAT_REJECT: curl_khstat = 2;
360// pub const CURLKHSTAT_DEFER: curl_khstat = 3;
361//
362// pub type curl_khmatch = __enum_ty;
363// pub const CURLKHMATCH_OK: curl_khmatch = 0;
364// pub const CURLKHMATCH_MISMATCH: curl_khmatch = 1;
365// pub const CURLKHMATCH_MISSING: curl_khmatch = 2;
366
367// pub type curl_sshkeycallback = extern fn(*mut CURL,
368//                                          *const curl_khkey,
369//                                          *const curl_khkey,
370//                                          curl_khmatch,
371//                                          *mut c_void) -> c_int;
372
373pub const CURL_NETRC_IGNORED: c_ulong = 0;
374pub const CURL_NETRC_OPTIONAL: c_ulong = 1;
375pub const CURL_NETRC_REQUIRED: c_ulong = 2;
376
377pub type curl_usessl = __enum_ty;
378pub const CURLUSESSL_NONE: curl_usessl = 0;
379pub const CURLUSESSL_TRY: curl_usessl = 1;
380pub const CURLUSESSL_CONTROL: curl_usessl = 2;
381pub const CURLUSESSL_ALL: curl_usessl = 3;
382
383pub const CURLPROTO_HTTP: c_int = 1 << 0;
384pub const CURLPROTO_HTTPS: c_int = 1 << 1;
385pub const CURLPROTO_FILE: c_int = 1 << 10;
386
387pub const CURLOPTTYPE_LONG: CURLoption = 0;
388pub const CURLOPTTYPE_OBJECTPOINT: CURLoption = 10_000;
389pub const CURLOPTTYPE_FUNCTIONPOINT: CURLoption = 20_000;
390pub const CURLOPTTYPE_OFF_T: CURLoption = 30_000;
391pub const CURLOPTTYPE_BLOB: CURLoption = 40_000;
392const CURLOPTTYPE_VALUES: CURLoption = CURLOPTTYPE_LONG;
393
394pub const CURLOPT_FILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 1;
395pub const CURLOPT_URL: CURLoption = CURLOPTTYPE_OBJECTPOINT + 2;
396pub const CURLOPT_PORT: CURLoption = CURLOPTTYPE_LONG + 3;
397pub const CURLOPT_PROXY: CURLoption = CURLOPTTYPE_OBJECTPOINT + 4;
398pub const CURLOPT_USERPWD: CURLoption = CURLOPTTYPE_OBJECTPOINT + 5;
399pub const CURLOPT_PROXYUSERPWD: CURLoption = CURLOPTTYPE_OBJECTPOINT + 6;
400pub const CURLOPT_RANGE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 7;
401pub const CURLOPT_INFILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 9;
402pub const CURLOPT_ERRORBUFFER: CURLoption = CURLOPTTYPE_OBJECTPOINT + 10;
403pub const CURLOPT_WRITEFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 11;
404pub const CURLOPT_READFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 12;
405pub const CURLOPT_TIMEOUT: CURLoption = CURLOPTTYPE_LONG + 13;
406pub const CURLOPT_INFILESIZE: CURLoption = CURLOPTTYPE_LONG + 14;
407pub const CURLOPT_POSTFIELDS: CURLoption = CURLOPTTYPE_OBJECTPOINT + 15;
408pub const CURLOPT_REFERER: CURLoption = CURLOPTTYPE_OBJECTPOINT + 16;
409pub const CURLOPT_FTPPORT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 17;
410pub const CURLOPT_USERAGENT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 18;
411pub const CURLOPT_LOW_SPEED_LIMIT: CURLoption = CURLOPTTYPE_LONG + 19;
412pub const CURLOPT_LOW_SPEED_TIME: CURLoption = CURLOPTTYPE_LONG + 20;
413pub const CURLOPT_RESUME_FROM: CURLoption = CURLOPTTYPE_LONG + 21;
414pub const CURLOPT_COOKIE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 22;
415pub const CURLOPT_HTTPHEADER: CURLoption = CURLOPTTYPE_OBJECTPOINT + 23;
416pub const CURLOPT_HTTPPOST: CURLoption = CURLOPTTYPE_OBJECTPOINT + 24;
417pub const CURLOPT_SSLCERT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 25;
418pub const CURLOPT_KEYPASSWD: CURLoption = CURLOPTTYPE_OBJECTPOINT + 26;
419pub const CURLOPT_CRLF: CURLoption = CURLOPTTYPE_LONG + 27;
420pub const CURLOPT_QUOTE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 28;
421pub const CURLOPT_WRITEHEADER: CURLoption = CURLOPTTYPE_OBJECTPOINT + 29;
422pub const CURLOPT_COOKIEFILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 31;
423pub const CURLOPT_SSLVERSION: CURLoption = CURLOPTTYPE_LONG + 32;
424pub const CURLOPT_TIMECONDITION: CURLoption = CURLOPTTYPE_LONG + 33;
425pub const CURLOPT_TIMEVALUE: CURLoption = CURLOPTTYPE_LONG + 34;
426pub const CURLOPT_CUSTOMREQUEST: CURLoption = CURLOPTTYPE_OBJECTPOINT + 36;
427pub const CURLOPT_STDERR: CURLoption = CURLOPTTYPE_OBJECTPOINT + 37;
428pub const CURLOPT_POSTQUOTE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 39;
429#[deprecated = "has no effect"]
430pub const CURLOPT_WRITEINFO: CURLoption = 9999;
431pub const CURLOPT_VERBOSE: CURLoption = CURLOPTTYPE_LONG + 41;
432pub const CURLOPT_HEADER: CURLoption = CURLOPTTYPE_LONG + 42;
433pub const CURLOPT_NOPROGRESS: CURLoption = CURLOPTTYPE_LONG + 43;
434pub const CURLOPT_NOBODY: CURLoption = CURLOPTTYPE_LONG + 44;
435pub const CURLOPT_FAILONERROR: CURLoption = CURLOPTTYPE_LONG + 45;
436pub const CURLOPT_UPLOAD: CURLoption = CURLOPTTYPE_LONG + 46;
437pub const CURLOPT_POST: CURLoption = CURLOPTTYPE_LONG + 47;
438pub const CURLOPT_DIRLISTONLY: CURLoption = CURLOPTTYPE_LONG + 48;
439pub const CURLOPT_APPEND: CURLoption = CURLOPTTYPE_LONG + 50;
440pub const CURLOPT_NETRC: CURLoption = CURLOPTTYPE_LONG + 51;
441pub const CURLOPT_FOLLOWLOCATION: CURLoption = CURLOPTTYPE_LONG + 52;
442pub const CURLOPT_TRANSFERTEXT: CURLoption = CURLOPTTYPE_LONG + 53;
443pub const CURLOPT_PUT: CURLoption = CURLOPTTYPE_LONG + 54;
444pub const CURLOPT_PROGRESSFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 56;
445pub const CURLOPT_PROGRESSDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 57;
446pub const CURLOPT_AUTOREFERER: CURLoption = CURLOPTTYPE_LONG + 58;
447pub const CURLOPT_PROXYPORT: CURLoption = CURLOPTTYPE_LONG + 59;
448pub const CURLOPT_POSTFIELDSIZE: CURLoption = CURLOPTTYPE_LONG + 60;
449pub const CURLOPT_HTTPPROXYTUNNEL: CURLoption = CURLOPTTYPE_LONG + 61;
450pub const CURLOPT_INTERFACE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 62;
451pub const CURLOPT_KRBLEVEL: CURLoption = CURLOPTTYPE_OBJECTPOINT + 63;
452pub const CURLOPT_SSL_VERIFYPEER: CURLoption = CURLOPTTYPE_LONG + 64;
453pub const CURLOPT_CAINFO: CURLoption = CURLOPTTYPE_OBJECTPOINT + 65;
454pub const CURLOPT_MAXREDIRS: CURLoption = CURLOPTTYPE_LONG + 68;
455pub const CURLOPT_FILETIME: CURLoption = CURLOPTTYPE_LONG + 69;
456pub const CURLOPT_TELNETOPTIONS: CURLoption = CURLOPTTYPE_OBJECTPOINT + 70;
457pub const CURLOPT_MAXCONNECTS: CURLoption = CURLOPTTYPE_LONG + 71;
458#[deprecated = "has no effect"]
459pub const CURLOPT_CLOSEPOLICY: CURLoption = 9999;
460pub const CURLOPT_FRESH_CONNECT: CURLoption = CURLOPTTYPE_LONG + 74;
461pub const CURLOPT_FORBID_REUSE: CURLoption = CURLOPTTYPE_LONG + 75;
462pub const CURLOPT_RANDOM_FILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 76;
463pub const CURLOPT_EGDSOCKET: CURLoption = CURLOPTTYPE_OBJECTPOINT + 77;
464pub const CURLOPT_CONNECTTIMEOUT: CURLoption = CURLOPTTYPE_LONG + 78;
465pub const CURLOPT_HEADERFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 79;
466pub const CURLOPT_HTTPGET: CURLoption = CURLOPTTYPE_LONG + 80;
467pub const CURLOPT_SSL_VERIFYHOST: CURLoption = CURLOPTTYPE_LONG + 81;
468pub const CURLOPT_COOKIEJAR: CURLoption = CURLOPTTYPE_OBJECTPOINT + 82;
469pub const CURLOPT_SSL_CIPHER_LIST: CURLoption = CURLOPTTYPE_OBJECTPOINT + 83;
470pub const CURLOPT_HTTP_VERSION: CURLoption = CURLOPTTYPE_LONG + 84;
471pub const CURLOPT_FTP_USE_EPSV: CURLoption = CURLOPTTYPE_LONG + 85;
472pub const CURLOPT_SSLCERTTYPE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 86;
473pub const CURLOPT_SSLKEY: CURLoption = CURLOPTTYPE_OBJECTPOINT + 87;
474pub const CURLOPT_SSLKEYTYPE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 88;
475pub const CURLOPT_SSLENGINE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 89;
476pub const CURLOPT_SSLENGINE_DEFAULT: CURLoption = CURLOPTTYPE_LONG + 90;
477pub const CURLOPT_DNS_USE_GLOBAL_CACHE: CURLoption = CURLOPTTYPE_LONG + 91;
478pub const CURLOPT_DNS_CACHE_TIMEOUT: CURLoption = CURLOPTTYPE_LONG + 92;
479pub const CURLOPT_PREQUOTE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 93;
480pub const CURLOPT_DEBUGFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 94;
481pub const CURLOPT_DEBUGDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 95;
482pub const CURLOPT_COOKIESESSION: CURLoption = CURLOPTTYPE_LONG + 96;
483pub const CURLOPT_CAPATH: CURLoption = CURLOPTTYPE_OBJECTPOINT + 97;
484pub const CURLOPT_BUFFERSIZE: CURLoption = CURLOPTTYPE_LONG + 98;
485pub const CURLOPT_NOSIGNAL: CURLoption = CURLOPTTYPE_LONG + 99;
486pub const CURLOPT_SHARE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 100;
487pub const CURLOPT_PROXYTYPE: CURLoption = CURLOPTTYPE_LONG + 101;
488pub const CURLOPT_ACCEPT_ENCODING: CURLoption = CURLOPTTYPE_OBJECTPOINT + 102;
489pub const CURLOPT_PRIVATE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 103;
490pub const CURLOPT_HTTP200ALIASES: CURLoption = CURLOPTTYPE_OBJECTPOINT + 104;
491pub const CURLOPT_UNRESTRICTED_AUTH: CURLoption = CURLOPTTYPE_LONG + 105;
492pub const CURLOPT_FTP_USE_EPRT: CURLoption = CURLOPTTYPE_LONG + 106;
493pub const CURLOPT_HTTPAUTH: CURLoption = CURLOPTTYPE_LONG + 107;
494pub const CURLOPT_SSL_CTX_FUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 108;
495pub const CURLOPT_SSL_CTX_DATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 109;
496pub const CURLOPT_FTP_CREATE_MISSING_DIRS: CURLoption = CURLOPTTYPE_LONG + 110;
497pub const CURLOPT_PROXYAUTH: CURLoption = CURLOPTTYPE_LONG + 111;
498pub const CURLOPT_FTP_RESPONSE_TIMEOUT: CURLoption = CURLOPTTYPE_LONG + 112;
499pub const CURLOPT_IPRESOLVE: CURLoption = CURLOPTTYPE_LONG + 113;
500pub const CURLOPT_MAXFILESIZE: CURLoption = CURLOPTTYPE_LONG + 114;
501pub const CURLOPT_INFILESIZE_LARGE: CURLoption = CURLOPTTYPE_OFF_T + 115;
502pub const CURLOPT_RESUME_FROM_LARGE: CURLoption = CURLOPTTYPE_OFF_T + 116;
503pub const CURLOPT_MAXFILESIZE_LARGE: CURLoption = CURLOPTTYPE_OFF_T + 117;
504pub const CURLOPT_NETRC_FILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 118;
505pub const CURLOPT_USE_SSL: CURLoption = CURLOPTTYPE_LONG + 119;
506pub const CURLOPT_POSTFIELDSIZE_LARGE: CURLoption = CURLOPTTYPE_OFF_T + 120;
507pub const CURLOPT_TCP_NODELAY: CURLoption = CURLOPTTYPE_LONG + 121;
508pub const CURLOPT_FTPSSLAUTH: CURLoption = CURLOPTTYPE_LONG + 129;
509pub const CURLOPT_IOCTLFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 130;
510pub const CURLOPT_IOCTLDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 131;
511pub const CURLOPT_FTP_ACCOUNT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 134;
512pub const CURLOPT_COOKIELIST: CURLoption = CURLOPTTYPE_OBJECTPOINT + 135;
513pub const CURLOPT_IGNORE_CONTENT_LENGTH: CURLoption = CURLOPTTYPE_LONG + 136;
514pub const CURLOPT_FTP_SKIP_PASV_IP: CURLoption = CURLOPTTYPE_LONG + 137;
515pub const CURLOPT_FTP_FILEMETHOD: CURLoption = CURLOPTTYPE_LONG + 138;
516pub const CURLOPT_LOCALPORT: CURLoption = CURLOPTTYPE_LONG + 139;
517pub const CURLOPT_LOCALPORTRANGE: CURLoption = CURLOPTTYPE_LONG + 140;
518pub const CURLOPT_CONNECT_ONLY: CURLoption = CURLOPTTYPE_LONG + 141;
519pub const CURLOPT_CONV_FROM_NETWORK_FUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 142;
520pub const CURLOPT_CONV_TO_NETWORK_FUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 143;
521pub const CURLOPT_CONV_FROM_UTF8_FUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 144;
522pub const CURLOPT_MAX_SEND_SPEED_LARGE: CURLoption = CURLOPTTYPE_OFF_T + 145;
523pub const CURLOPT_MAX_RECV_SPEED_LARGE: CURLoption = CURLOPTTYPE_OFF_T + 146;
524pub const CURLOPT_FTP_ALTERNATIVE_TO_USER: CURLoption = CURLOPTTYPE_OBJECTPOINT + 147;
525pub const CURLOPT_SOCKOPTFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 148;
526pub const CURLOPT_SOCKOPTDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 149;
527pub const CURLOPT_SSL_SESSIONID_CACHE: CURLoption = CURLOPTTYPE_LONG + 150;
528pub const CURLOPT_SSH_AUTH_TYPES: CURLoption = CURLOPTTYPE_LONG + 151;
529pub const CURLOPT_SSH_PUBLIC_KEYFILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 152;
530pub const CURLOPT_SSH_PRIVATE_KEYFILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 153;
531pub const CURLOPT_FTP_SSL_CCC: CURLoption = CURLOPTTYPE_LONG + 154;
532pub const CURLOPT_TIMEOUT_MS: CURLoption = CURLOPTTYPE_LONG + 155;
533pub const CURLOPT_CONNECTTIMEOUT_MS: CURLoption = CURLOPTTYPE_LONG + 156;
534pub const CURLOPT_HTTP_TRANSFER_DECODING: CURLoption = CURLOPTTYPE_LONG + 157;
535pub const CURLOPT_HTTP_CONTENT_DECODING: CURLoption = CURLOPTTYPE_LONG + 158;
536pub const CURLOPT_NEW_FILE_PERMS: CURLoption = CURLOPTTYPE_LONG + 159;
537pub const CURLOPT_NEW_DIRECTORY_PERMS: CURLoption = CURLOPTTYPE_LONG + 160;
538pub const CURLOPT_POSTREDIR: CURLoption = CURLOPTTYPE_LONG + 161;
539pub const CURLOPT_SSH_HOST_PUBLIC_KEY_MD5: CURLoption = CURLOPTTYPE_OBJECTPOINT + 162;
540pub const CURLOPT_OPENSOCKETFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 163;
541pub const CURLOPT_OPENSOCKETDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 164;
542pub const CURLOPT_COPYPOSTFIELDS: CURLoption = CURLOPTTYPE_OBJECTPOINT + 165;
543pub const CURLOPT_PROXY_TRANSFER_MODE: CURLoption = CURLOPTTYPE_LONG + 166;
544pub const CURLOPT_SEEKFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 167;
545pub const CURLOPT_SEEKDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 168;
546pub const CURLOPT_CRLFILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 169;
547pub const CURLOPT_ISSUERCERT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 170;
548pub const CURLOPT_ADDRESS_SCOPE: CURLoption = CURLOPTTYPE_LONG + 171;
549pub const CURLOPT_CERTINFO: CURLoption = CURLOPTTYPE_LONG + 172;
550pub const CURLOPT_USERNAME: CURLoption = CURLOPTTYPE_OBJECTPOINT + 173;
551pub const CURLOPT_PASSWORD: CURLoption = CURLOPTTYPE_OBJECTPOINT + 174;
552pub const CURLOPT_PROXYUSERNAME: CURLoption = CURLOPTTYPE_OBJECTPOINT + 175;
553pub const CURLOPT_PROXYPASSWORD: CURLoption = CURLOPTTYPE_OBJECTPOINT + 176;
554pub const CURLOPT_NOPROXY: CURLoption = CURLOPTTYPE_OBJECTPOINT + 177;
555pub const CURLOPT_TFTP_BLKSIZE: CURLoption = CURLOPTTYPE_LONG + 178;
556pub const CURLOPT_SOCKS5_GSSAPI_SERVICE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 179;
557pub const CURLOPT_SOCKS5_GSSAPI_NEC: CURLoption = CURLOPTTYPE_LONG + 180;
558pub const CURLOPT_PROTOCOLS: CURLoption = CURLOPTTYPE_LONG + 181;
559pub const CURLOPT_REDIR_PROTOCOLS: CURLoption = CURLOPTTYPE_LONG + 182;
560pub const CURLOPT_SSH_KNOWNHOSTS: CURLoption = CURLOPTTYPE_OBJECTPOINT + 183;
561pub const CURLOPT_SSH_KEYFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 184;
562pub const CURLOPT_SSH_KEYDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 185;
563pub const CURLOPT_MAIL_FROM: CURLoption = CURLOPTTYPE_OBJECTPOINT + 186;
564pub const CURLOPT_MAIL_RCPT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 187;
565pub const CURLOPT_FTP_USE_PRET: CURLoption = CURLOPTTYPE_LONG + 188;
566pub const CURLOPT_RTSP_REQUEST: CURLoption = CURLOPTTYPE_LONG + 189;
567pub const CURLOPT_RTSP_SESSION_ID: CURLoption = CURLOPTTYPE_OBJECTPOINT + 190;
568pub const CURLOPT_RTSP_STREAM_URI: CURLoption = CURLOPTTYPE_OBJECTPOINT + 191;
569pub const CURLOPT_RTSP_TRANSPORT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 192;
570pub const CURLOPT_RTSP_CLIENT_CSEQ: CURLoption = CURLOPTTYPE_LONG + 193;
571pub const CURLOPT_RTSP_SERVER_CSEQ: CURLoption = CURLOPTTYPE_LONG + 194;
572pub const CURLOPT_INTERLEAVEDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 195;
573pub const CURLOPT_INTERLEAVEFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 196;
574pub const CURLOPT_WILDCARDMATCH: CURLoption = CURLOPTTYPE_LONG + 197;
575pub const CURLOPT_CHUNK_BGN_FUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 198;
576pub const CURLOPT_CHUNK_END_FUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 199;
577pub const CURLOPT_FNMATCH_FUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 200;
578pub const CURLOPT_CHUNK_DATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 201;
579pub const CURLOPT_FNMATCH_DATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 202;
580pub const CURLOPT_RESOLVE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 203;
581pub const CURLOPT_TLSAUTH_USERNAME: CURLoption = CURLOPTTYPE_OBJECTPOINT + 204;
582pub const CURLOPT_TLSAUTH_PASSWORD: CURLoption = CURLOPTTYPE_OBJECTPOINT + 205;
583pub const CURLOPT_TLSAUTH_TYPE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 206;
584pub const CURLOPT_TRANSFER_ENCODING: CURLoption = CURLOPTTYPE_LONG + 207;
585pub const CURLOPT_CLOSESOCKETFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 208;
586pub const CURLOPT_CLOSESOCKETDATA: CURLoption = CURLOPTTYPE_OBJECTPOINT + 209;
587pub const CURLOPT_GSSAPI_DELEGATION: CURLoption = CURLOPTTYPE_LONG + 210;
588pub const CURLOPT_DNS_SERVERS: CURLoption = CURLOPTTYPE_OBJECTPOINT + 211;
589// pub const CURLOPT_ACCEPTTIMEOUT_MS: CURLoption = CURLOPTTYPE_LONG + 212;
590pub const CURLOPT_TCP_KEEPALIVE: CURLoption = CURLOPTTYPE_LONG + 213;
591pub const CURLOPT_TCP_KEEPIDLE: CURLoption = CURLOPTTYPE_LONG + 214;
592pub const CURLOPT_TCP_KEEPINTVL: CURLoption = CURLOPTTYPE_LONG + 215;
593pub const CURLOPT_SSL_OPTIONS: CURLoption = CURLOPTTYPE_LONG + 216;
594// pub const CURLOPT_MAIL_AUTH: CURLoption = CURLOPTTYPE_OBJECTPOINT + 217;
595// pub const CURLOPT_SASL_IR: CURLoption = CURLOPTTYPE_LONG + 218;
596// pub const CURLOPT_XFERINFOFUNCTION: CURLoption = CURLOPTTYPE_FUNCTIONPOINT + 219;
597// pub const CURLOPT_XOAUTH2_BEARER: CURLoption = CURLOPTTYPE_OBJECTPOINT + 220;
598// pub const CURLOPT_DNS_INTERFACE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 221;
599// pub const CURLOPT_DNS_LOCAL_IP4: CURLoption = CURLOPTTYPE_OBJECTPOINT + 222;
600// pub const CURLOPT_DNS_LOCAL_IP6: CURLoption = CURLOPTTYPE_OBJECTPOINT + 223;
601// pub const CURLOPT_LOGIN_OPTIONS: CURLoption = CURLOPTTYPE_OBJECTPOINT + 224;
602pub const CURLOPT_EXPECT_100_TIMEOUT_MS: CURLoption = CURLOPTTYPE_LONG + 227;
603pub const CURLOPT_PROXYHEADER: CURLoption = CURLOPTTYPE_OBJECTPOINT + 228;
604pub const CURLOPT_PINNEDPUBLICKEY: CURLoption = CURLOPTTYPE_OBJECTPOINT + 230;
605pub const CURLOPT_UNIX_SOCKET_PATH: CURLoption = CURLOPTTYPE_OBJECTPOINT + 231;
606pub const CURLOPT_PATH_AS_IS: CURLoption = CURLOPTTYPE_LONG + 234;
607pub const CURLOPT_PIPEWAIT: CURLoption = CURLOPTTYPE_LONG + 237;
608pub const CURLOPT_CONNECT_TO: CURLoption = CURLOPTTYPE_OBJECTPOINT + 243;
609pub const CURLOPT_PROXY_CAINFO: CURLoption = CURLOPTTYPE_OBJECTPOINT + 246;
610pub const CURLOPT_PROXY_CAPATH: CURLoption = CURLOPTTYPE_OBJECTPOINT + 247;
611pub const CURLOPT_PROXY_SSL_VERIFYPEER: CURLoption = CURLOPTTYPE_LONG + 248;
612pub const CURLOPT_PROXY_SSL_VERIFYHOST: CURLoption = CURLOPTTYPE_LONG + 249;
613pub const CURLOPT_PROXY_SSLVERSION: CURLoption = CURLOPTTYPE_VALUES + 250;
614pub const CURLOPT_PROXY_SSLCERT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 254;
615pub const CURLOPT_PROXY_SSLCERTTYPE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 255;
616pub const CURLOPT_PROXY_SSLKEY: CURLoption = CURLOPTTYPE_OBJECTPOINT + 256;
617pub const CURLOPT_PROXY_SSLKEYTYPE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 257;
618pub const CURLOPT_PROXY_KEYPASSWD: CURLoption = CURLOPTTYPE_OBJECTPOINT + 258;
619pub const CURLOPT_PROXY_SSL_CIPHER_LIST: CURLoption = CURLOPTTYPE_OBJECTPOINT + 259;
620pub const CURLOPT_PROXY_CRLFILE: CURLoption = CURLOPTTYPE_OBJECTPOINT + 260;
621pub const CURLOPT_PROXY_SSL_OPTIONS: CURLoption = CURLOPTTYPE_LONG + 261;
622
623pub const CURLOPT_ABSTRACT_UNIX_SOCKET: CURLoption = CURLOPTTYPE_OBJECTPOINT + 264;
624
625pub const CURLOPT_DOH_URL: CURLoption = CURLOPTTYPE_OBJECTPOINT + 279;
626pub const CURLOPT_UPLOAD_BUFFERSIZE: CURLoption = CURLOPTTYPE_LONG + 280;
627
628pub const CURLOPT_HTTP09_ALLOWED: CURLoption = CURLOPTTYPE_LONG + 285;
629
630pub const CURLOPT_MAXAGE_CONN: CURLoption = CURLOPTTYPE_LONG + 288;
631
632pub const CURLOPT_SSLCERT_BLOB: CURLoption = CURLOPTTYPE_BLOB + 291;
633pub const CURLOPT_SSLKEY_BLOB: CURLoption = CURLOPTTYPE_BLOB + 292;
634pub const CURLOPT_PROXY_SSLCERT_BLOB: CURLoption = CURLOPTTYPE_BLOB + 293;
635pub const CURLOPT_PROXY_SSLKEY_BLOB: CURLoption = CURLOPTTYPE_BLOB + 294;
636pub const CURLOPT_ISSUERCERT_BLOB: CURLoption = CURLOPTTYPE_BLOB + 295;
637
638pub const CURLOPT_PROXY_ISSUERCERT: CURLoption = CURLOPTTYPE_OBJECTPOINT + 296;
639pub const CURLOPT_PROXY_ISSUERCERT_BLOB: CURLoption = CURLOPTTYPE_BLOB + 297;
640
641pub const CURLOPT_AWS_SIGV4: CURLoption = CURLOPTTYPE_OBJECTPOINT + 305;
642
643pub const CURLOPT_DOH_SSL_VERIFYPEER: CURLoption = CURLOPTTYPE_LONG + 306;
644pub const CURLOPT_DOH_SSL_VERIFYHOST: CURLoption = CURLOPTTYPE_LONG + 307;
645pub const CURLOPT_DOH_SSL_VERIFYSTATUS: CURLoption = CURLOPTTYPE_LONG + 308;
646pub const CURLOPT_CAINFO_BLOB: CURLoption = CURLOPTTYPE_BLOB + 309;
647pub const CURLOPT_PROXY_CAINFO_BLOB: CURLoption = CURLOPTTYPE_BLOB + 310;
648
649pub const CURLOPT_HTTPSIG_ALGORITHM: CURLoption = CURLOPTTYPE_VALUES + 329;
650pub const CURLOPT_HTTPSIG_KEY: CURLoption = CURLOPTTYPE_OBJECTPOINT + 330;
651pub const CURLOPT_HTTPSIG_KEYID: CURLoption = CURLOPTTYPE_OBJECTPOINT + 331;
652pub const CURLOPT_HTTPSIG_HEADERS: CURLoption = CURLOPTTYPE_OBJECTPOINT + 332;
653
654pub const CURL_IPRESOLVE_WHATEVER: c_int = 0;
655pub const CURL_IPRESOLVE_V4: c_int = 1;
656pub const CURL_IPRESOLVE_V6: c_int = 2;
657
658pub const CURLSSLOPT_ALLOW_BEAST: c_long = 1 << 0;
659pub const CURLSSLOPT_NO_REVOKE: c_long = 1 << 1;
660pub const CURLSSLOPT_NO_PARTIALCHAIN: c_long = 1 << 2;
661pub const CURLSSLOPT_REVOKE_BEST_EFFORT: c_long = 1 << 3;
662pub const CURLSSLOPT_NATIVE_CA: c_long = 1 << 4;
663pub const CURLSSLOPT_AUTO_CLIENT_CERT: c_long = 1 << 5;
664
665/// These enums are for use with the CURLOPT_HTTP_VERSION option.
666///
667/// Setting this means we don't care, and that we'd like the library to choose
668/// the best possible for us!
669pub const CURL_HTTP_VERSION_NONE: c_int = 0;
670/// Please use HTTP 1.0 in the request
671pub const CURL_HTTP_VERSION_1_0: c_int = 1;
672/// Please use HTTP 1.1 in the request
673pub const CURL_HTTP_VERSION_1_1: c_int = 2;
674/// Please use HTTP 2 in the request
675/// (Added in CURL 7.33.0)
676pub const CURL_HTTP_VERSION_2_0: c_int = 3;
677/// Use version 2 for HTTPS, version 1.1 for HTTP
678/// (Added in CURL 7.47.0)
679pub const CURL_HTTP_VERSION_2TLS: c_int = 4;
680/// Please use HTTP 2 without HTTP/1.1 Upgrade
681/// (Added in CURL 7.49.0)
682pub const CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE: c_int = 5;
683/// Use HTTP/3, fallback to HTTP/2 or HTTP/1 if needed.
684/// (Added in CURL 7.66.0)
685pub const CURL_HTTP_VERSION_3: c_int = 30;
686
687// Note that the type here is wrong, it's just intended to just be an enum.
688pub const CURL_SSLVERSION_DEFAULT: __enum_ty = 0;
689pub const CURL_SSLVERSION_TLSv1: __enum_ty = 1;
690pub const CURL_SSLVERSION_SSLv2: __enum_ty = 2;
691pub const CURL_SSLVERSION_SSLv3: __enum_ty = 3;
692pub const CURL_SSLVERSION_TLSv1_0: __enum_ty = 4;
693pub const CURL_SSLVERSION_TLSv1_1: __enum_ty = 5;
694pub const CURL_SSLVERSION_TLSv1_2: __enum_ty = 6;
695pub const CURL_SSLVERSION_TLSv1_3: __enum_ty = 7;
696
697pub const CURLOPT_READDATA: CURLoption = CURLOPT_INFILE;
698pub const CURLOPT_WRITEDATA: CURLoption = CURLOPT_FILE;
699pub const CURLOPT_HEADERDATA: CURLoption = CURLOPT_WRITEHEADER;
700
701pub type curl_TimeCond = __enum_ty;
702pub const CURL_TIMECOND_NONE: curl_TimeCond = 0;
703pub const CURL_TIMECOND_IFMODSINCE: curl_TimeCond = 1;
704pub const CURL_TIMECOND_IFUNMODSINCE: curl_TimeCond = 2;
705pub const CURL_TIMECOND_LASTMOD: curl_TimeCond = 3;
706
707pub type CURLformoption = __enum_ty;
708pub const CURLFORM_NOTHING: CURLformoption = 0;
709pub const CURLFORM_COPYNAME: CURLformoption = 1;
710pub const CURLFORM_PTRNAME: CURLformoption = 2;
711pub const CURLFORM_NAMELENGTH: CURLformoption = 3;
712pub const CURLFORM_COPYCONTENTS: CURLformoption = 4;
713pub const CURLFORM_PTRCONTENTS: CURLformoption = 5;
714pub const CURLFORM_CONTENTSLENGTH: CURLformoption = 6;
715pub const CURLFORM_FILECONTENT: CURLformoption = 7;
716pub const CURLFORM_ARRAY: CURLformoption = 8;
717pub const CURLFORM_OBSOLETE: CURLformoption = 9;
718pub const CURLFORM_FILE: CURLformoption = 10;
719pub const CURLFORM_BUFFER: CURLformoption = 11;
720pub const CURLFORM_BUFFERPTR: CURLformoption = 12;
721pub const CURLFORM_BUFFERLENGTH: CURLformoption = 13;
722pub const CURLFORM_CONTENTTYPE: CURLformoption = 14;
723pub const CURLFORM_CONTENTHEADER: CURLformoption = 15;
724pub const CURLFORM_FILENAME: CURLformoption = 16;
725pub const CURLFORM_END: CURLformoption = 17;
726pub const CURLFORM_STREAM: CURLformoption = 19;
727
728pub type CURLFORMcode = __enum_ty;
729pub const CURL_FORMADD_OK: CURLFORMcode = 0;
730pub const CURL_FORMADD_MEMORY: CURLFORMcode = 1;
731pub const CURL_FORMADD_OPTION_TWICE: CURLFORMcode = 2;
732pub const CURL_FORMADD_NULL: CURLFORMcode = 3;
733pub const CURL_FORMADD_UNKNOWN_OPTION: CURLFORMcode = 4;
734pub const CURL_FORMADD_INCOMPLETE: CURLFORMcode = 5;
735pub const CURL_FORMADD_ILLEGAL_ARRAY: CURLFORMcode = 6;
736pub const CURL_FORMADD_DISABLED: CURLFORMcode = 7;
737
738pub const CURL_REDIR_POST_301: c_ulong = 1;
739pub const CURL_REDIR_POST_302: c_ulong = 2;
740pub const CURL_REDIR_POST_303: c_ulong = 4;
741pub const CURL_REDIR_POST_ALL: c_ulong =
742    CURL_REDIR_POST_301 | CURL_REDIR_POST_302 | CURL_REDIR_POST_303;
743
744#[repr(C)]
745pub struct curl_forms {
746    pub option: CURLformoption,
747    pub value: *const c_char,
748}
749
750pub type curl_formget_callback = extern "C" fn(*mut c_void, *const c_char, size_t) -> size_t;
751
752#[repr(C)]
753pub struct curl_slist {
754    pub data: *mut c_char,
755    pub next: *mut curl_slist,
756}
757
758#[repr(C)]
759pub struct curl_certinfo {
760    pub num_of_certs: c_int,
761    pub certinfo: *mut *mut curl_slist,
762}
763
764// pub type curl_sslbackend = __enum_ty;
765// pub const CURLSSLBACKEND_NONE: curl_sslbackend = 0;
766// pub const CURLSSLBACKEND_OPENSSL: curl_sslbackend = 1;
767// pub const CURLSSLBACKEND_GNUTLS: curl_sslbackend = 2;
768// pub const CURLSSLBACKEND_NSS: curl_sslbackend = 3;
769// pub const CURLSSLBACKEND_QSOSSL: curl_sslbackend = 4;
770// pub const CURLSSLBACKEND_GSKIT: curl_sslbackend = 5;
771// pub const CURLSSLBACKEND_POLARSSL: curl_sslbackend = 6;
772// pub const CURLSSLBACKEND_CYASSL: curl_sslbackend = 7;
773// pub const CURLSSLBACKEND_SCHANNEL: curl_sslbackend = 8;
774// pub const CURLSSLBACKEND_DARWINSSL: curl_sslbackend = 9;
775
776// #[repr(C)]
777// pub struct curl_tlssessioninfo {
778//     pub backend: curl_sslbackend,
779//     pub internals: *mut c_void,
780// }
781
782pub const CURLINFO_STRING: CURLINFO = 0x100000;
783pub const CURLINFO_LONG: CURLINFO = 0x200000;
784pub const CURLINFO_DOUBLE: CURLINFO = 0x300000;
785pub const CURLINFO_SLIST: CURLINFO = 0x400000;
786pub const CURLINFO_MASK: CURLINFO = 0x0fffff;
787pub const CURLINFO_TYPEMASK: CURLINFO = 0xf00000;
788
789pub const CURLINFO_EFFECTIVE_URL: CURLINFO = CURLINFO_STRING + 1;
790pub const CURLINFO_RESPONSE_CODE: CURLINFO = CURLINFO_LONG + 2;
791pub const CURLINFO_TOTAL_TIME: CURLINFO = CURLINFO_DOUBLE + 3;
792pub const CURLINFO_NAMELOOKUP_TIME: CURLINFO = CURLINFO_DOUBLE + 4;
793pub const CURLINFO_CONNECT_TIME: CURLINFO = CURLINFO_DOUBLE + 5;
794pub const CURLINFO_PRETRANSFER_TIME: CURLINFO = CURLINFO_DOUBLE + 6;
795pub const CURLINFO_SIZE_UPLOAD: CURLINFO = CURLINFO_DOUBLE + 7;
796pub const CURLINFO_SIZE_DOWNLOAD: CURLINFO = CURLINFO_DOUBLE + 8;
797pub const CURLINFO_SPEED_DOWNLOAD: CURLINFO = CURLINFO_DOUBLE + 9;
798pub const CURLINFO_SPEED_UPLOAD: CURLINFO = CURLINFO_DOUBLE + 10;
799pub const CURLINFO_HEADER_SIZE: CURLINFO = CURLINFO_LONG + 11;
800pub const CURLINFO_REQUEST_SIZE: CURLINFO = CURLINFO_LONG + 12;
801pub const CURLINFO_SSL_VERIFYRESULT: CURLINFO = CURLINFO_LONG + 13;
802pub const CURLINFO_FILETIME: CURLINFO = CURLINFO_LONG + 14;
803pub const CURLINFO_CONTENT_LENGTH_DOWNLOAD: CURLINFO = CURLINFO_DOUBLE + 15;
804pub const CURLINFO_CONTENT_LENGTH_UPLOAD: CURLINFO = CURLINFO_DOUBLE + 16;
805pub const CURLINFO_STARTTRANSFER_TIME: CURLINFO = CURLINFO_DOUBLE + 17;
806pub const CURLINFO_CONTENT_TYPE: CURLINFO = CURLINFO_STRING + 18;
807pub const CURLINFO_REDIRECT_TIME: CURLINFO = CURLINFO_DOUBLE + 19;
808pub const CURLINFO_REDIRECT_COUNT: CURLINFO = CURLINFO_LONG + 20;
809pub const CURLINFO_PRIVATE: CURLINFO = CURLINFO_STRING + 21;
810pub const CURLINFO_HTTP_CONNECTCODE: CURLINFO = CURLINFO_LONG + 22;
811pub const CURLINFO_HTTPAUTH_AVAIL: CURLINFO = CURLINFO_LONG + 23;
812pub const CURLINFO_PROXYAUTH_AVAIL: CURLINFO = CURLINFO_LONG + 24;
813pub const CURLINFO_OS_ERRNO: CURLINFO = CURLINFO_LONG + 25;
814pub const CURLINFO_NUM_CONNECTS: CURLINFO = CURLINFO_LONG + 26;
815pub const CURLINFO_SSL_ENGINES: CURLINFO = CURLINFO_SLIST + 27;
816pub const CURLINFO_COOKIELIST: CURLINFO = CURLINFO_SLIST + 28;
817pub const CURLINFO_LASTSOCKET: CURLINFO = CURLINFO_LONG + 29;
818pub const CURLINFO_FTP_ENTRY_PATH: CURLINFO = CURLINFO_STRING + 30;
819pub const CURLINFO_REDIRECT_URL: CURLINFO = CURLINFO_STRING + 31;
820pub const CURLINFO_PRIMARY_IP: CURLINFO = CURLINFO_STRING + 32;
821pub const CURLINFO_APPCONNECT_TIME: CURLINFO = CURLINFO_DOUBLE + 33;
822pub const CURLINFO_CERTINFO: CURLINFO = CURLINFO_SLIST + 34;
823pub const CURLINFO_CONDITION_UNMET: CURLINFO = CURLINFO_LONG + 35;
824pub const CURLINFO_RTSP_SESSION_ID: CURLINFO = CURLINFO_STRING + 36;
825pub const CURLINFO_RTSP_CLIENT_CSEQ: CURLINFO = CURLINFO_LONG + 37;
826pub const CURLINFO_RTSP_SERVER_CSEQ: CURLINFO = CURLINFO_LONG + 38;
827pub const CURLINFO_RTSP_CSEQ_RECV: CURLINFO = CURLINFO_LONG + 39;
828pub const CURLINFO_PRIMARY_PORT: CURLINFO = CURLINFO_LONG + 40;
829pub const CURLINFO_LOCAL_IP: CURLINFO = CURLINFO_STRING + 41;
830pub const CURLINFO_LOCAL_PORT: CURLINFO = CURLINFO_LONG + 42;
831// pub const CURLINFO_TLS_SESSION: CURLINFO = CURLINFO_SLIST + 43;
832
833pub type curl_closepolicy = __enum_ty;
834pub const CURLCLOSEPOLICY_NONE: curl_closepolicy = 0;
835pub const CURLCLOSEPOLICY_OLDEST: curl_closepolicy = 1;
836pub const CURLCLOSEPOLICY_LEAST_RECENTLY_USED: curl_closepolicy = 2;
837pub const CURLCLOSEPOLICY_LEAST_TRAFFIC: curl_closepolicy = 3;
838pub const CURLCLOSEPOLICY_SLOWEST: curl_closepolicy = 4;
839pub const CURLCLOSEPOLICY_CALLBACK: curl_closepolicy = 5;
840
841pub const CURL_GLOBAL_SSL: c_long = 1 << 0;
842pub const CURL_GLOBAL_WIN32: c_long = 1 << 1;
843pub const CURL_GLOBAL_ALL: c_long = CURL_GLOBAL_SSL | CURL_GLOBAL_WIN32;
844pub const CURL_GLOBAL_NOTHING: c_long = 0;
845pub const CURL_GLOBAL_DEFAULT: c_long = CURL_GLOBAL_ALL;
846// pub const CURL_GLOBAL_ACK_EINTR: c_long = 1 << 2;
847
848pub type curl_lock_data = __enum_ty;
849pub const CURL_LOCK_DATA_NONE: curl_lock_data = 0;
850pub const CURL_LOCK_DATA_SHARE: curl_lock_data = 1;
851pub const CURL_LOCK_DATA_COOKIE: curl_lock_data = 2;
852pub const CURL_LOCK_DATA_DNS: curl_lock_data = 3;
853pub const CURL_LOCK_DATA_SSL_SESSION: curl_lock_data = 4;
854pub const CURL_LOCK_DATA_CONNECT: curl_lock_data = 5;
855
856pub type curl_lock_access = __enum_ty;
857pub const CURL_LOCK_ACCESS_NONE: curl_lock_access = 0;
858pub const CURL_LOCK_ACCESS_SHARED: curl_lock_access = 1;
859pub const CURL_LOCK_ACCESS_SINGLE: curl_lock_access = 2;
860
861pub type curl_lock_function =
862    extern "C" fn(*mut CURL, curl_lock_data, curl_lock_access, *mut c_void);
863pub type curl_unlock_function = extern "C" fn(*mut CURL, curl_lock_data, *mut c_void);
864
865pub enum CURLSH {}
866
867pub type CURLSHcode = __enum_ty;
868pub const CURLSHE_OK: CURLSHcode = 0;
869pub const CURLSHE_BAD_OPTION: CURLSHcode = 1;
870pub const CURLSHE_IN_USE: CURLSHcode = 2;
871pub const CURLSHE_INVALID: CURLSHcode = 3;
872pub const CURLSHE_NOMEM: CURLSHcode = 4;
873// pub const CURLSHE_NOT_BUILT_IN: CURLSHcode = 5;
874
875pub type CURLSHoption = __enum_ty;
876pub const CURLSHOPT_NONE: CURLSHoption = 0;
877pub const CURLSHOPT_SHARE: CURLSHoption = 1;
878pub const CURLSHOPT_UNSHARE: CURLSHoption = 2;
879pub const CURLSHOPT_LOCKFUNC: CURLSHoption = 3;
880pub const CURLSHOPT_UNLOCKFUNC: CURLSHoption = 4;
881pub const CURLSHOPT_USERDATA: CURLSHoption = 5;
882
883pub const CURLVERSION_FIRST: CURLversion = 0;
884pub const CURLVERSION_SECOND: CURLversion = 1;
885pub const CURLVERSION_THIRD: CURLversion = 2;
886pub const CURLVERSION_FOURTH: CURLversion = 3;
887pub const CURLVERSION_FIFTH: CURLversion = 4;
888pub const CURLVERSION_SIXTH: CURLversion = 5;
889pub const CURLVERSION_SEVENTH: CURLversion = 6;
890pub const CURLVERSION_EIGHTH: CURLversion = 7;
891pub const CURLVERSION_NINTH: CURLversion = 8;
892pub const CURLVERSION_TENTH: CURLversion = 9;
893pub const CURLVERSION_ELEVENTH: CURLversion = 10;
894pub const CURLVERSION_TWELFTH: CURLversion = 11;
895pub const CURLVERSION_NOW: CURLversion = CURLVERSION_TWELFTH;
896
897#[repr(C)]
898pub struct curl_version_info_data {
899    pub age: CURLversion,
900    pub version: *const c_char,
901    pub version_num: c_uint,
902    pub host: *const c_char,
903    pub features: c_int,
904    pub ssl_version: *const c_char,
905    pub ssl_version_num: c_long,
906    pub libz_version: *const c_char,
907    pub protocols: *const *const c_char,
908    pub ares: *const c_char,
909    pub ares_num: c_int,
910    pub libidn: *const c_char,
911    pub iconv_ver_num: c_int,
912    pub libssh_version: *const c_char,
913    pub brotli_ver_num: c_uint,
914    pub brotli_version: *const c_char,
915    pub nghttp2_ver_num: c_uint,
916    pub nghttp2_version: *const c_char,
917    pub quic_version: *const c_char,
918    pub cainfo: *const c_char,
919    pub capath: *const c_char,
920    pub zstd_ver_num: c_uint,
921    pub zstd_version: *const c_char,
922    pub hyper_version: *const c_char,
923    pub gsasl_version: *const c_char,
924    pub feature_names: *const *const c_char,
925    pub rtmp_version: *const c_char,
926}
927
928pub const CURL_VERSION_IPV6: c_int = 1 << 0;
929pub const CURL_VERSION_KERBEROS4: c_int = 1 << 1;
930pub const CURL_VERSION_SSL: c_int = 1 << 2;
931pub const CURL_VERSION_LIBZ: c_int = 1 << 3;
932pub const CURL_VERSION_NTLM: c_int = 1 << 4;
933pub const CURL_VERSION_GSSNEGOTIATE: c_int = 1 << 5;
934pub const CURL_VERSION_DEBUG: c_int = 1 << 6;
935pub const CURL_VERSION_ASYNCHDNS: c_int = 1 << 7;
936pub const CURL_VERSION_SPNEGO: c_int = 1 << 8;
937pub const CURL_VERSION_LARGEFILE: c_int = 1 << 9;
938pub const CURL_VERSION_IDN: c_int = 1 << 10;
939pub const CURL_VERSION_SSPI: c_int = 1 << 11;
940pub const CURL_VERSION_CONV: c_int = 1 << 12;
941pub const CURL_VERSION_CURLDEBUG: c_int = 1 << 13;
942pub const CURL_VERSION_TLSAUTH_SRP: c_int = 1 << 14;
943pub const CURL_VERSION_NTLM_WB: c_int = 1 << 15;
944pub const CURL_VERSION_HTTP2: c_int = 1 << 16;
945pub const CURL_VERSION_UNIX_SOCKETS: c_int = 1 << 19;
946pub const CURL_VERSION_HTTPS_PROXY: c_int = 1 << 21;
947pub const CURL_VERSION_BROTLI: c_int = 1 << 23;
948pub const CURL_VERSION_ALTSVC: c_int = 1 << 24;
949pub const CURL_VERSION_HTTP3: c_int = 1 << 25;
950pub const CURL_VERSION_ZSTD: c_int = 1 << 26;
951pub const CURL_VERSION_UNICODE: c_int = 1 << 27;
952pub const CURL_VERSION_HSTS: c_int = 1 << 28;
953pub const CURL_VERSION_GSASL: c_int = 1 << 29;
954
955pub const CURLPAUSE_RECV: c_int = 1 << 0;
956pub const CURLPAUSE_RECV_CONT: c_int = 0;
957pub const CURLPAUSE_SEND: c_int = 1 << 2;
958pub const CURLPAUSE_SEND_CONT: c_int = 0;
959
960pub enum CURLM {}
961
962pub type CURLMcode = c_int;
963pub const CURLM_CALL_MULTI_PERFORM: CURLMcode = -1;
964pub const CURLM_OK: CURLMcode = 0;
965pub const CURLM_BAD_HANDLE: CURLMcode = 1;
966pub const CURLM_BAD_EASY_HANDLE: CURLMcode = 2;
967pub const CURLM_OUT_OF_MEMORY: CURLMcode = 3;
968pub const CURLM_INTERNAL_ERROR: CURLMcode = 4;
969pub const CURLM_BAD_SOCKET: CURLMcode = 5;
970pub const CURLM_UNKNOWN_OPTION: CURLMcode = 6;
971// pub const CURLM_ADDED_ALREADY: CURLMcode = 7;
972
973pub type CURLMSG = __enum_ty;
974pub const CURLMSG_NONE: CURLMSG = 0;
975pub const CURLMSG_DONE: CURLMSG = 1;
976
977#[repr(C)]
978pub struct CURLMsg {
979    pub msg: CURLMSG,
980    pub easy_handle: *mut CURL,
981    pub data: *mut c_void,
982}
983
984pub const CURL_WAIT_POLLIN: c_short = 0x1;
985pub const CURL_WAIT_POLLPRI: c_short = 0x2;
986pub const CURL_WAIT_POLLOUT: c_short = 0x4;
987
988#[repr(C)]
989pub struct curl_waitfd {
990    pub fd: curl_socket_t,
991    pub events: c_short,
992    pub revents: c_short,
993}
994
995pub const CURL_POLL_NONE: c_int = 0;
996pub const CURL_POLL_IN: c_int = 1;
997pub const CURL_POLL_OUT: c_int = 2;
998pub const CURL_POLL_INOUT: c_int = 3;
999pub const CURL_POLL_REMOVE: c_int = 4;
1000pub const CURL_CSELECT_IN: c_int = 1;
1001pub const CURL_CSELECT_OUT: c_int = 2;
1002pub const CURL_CSELECT_ERR: c_int = 4;
1003pub const CURL_SOCKET_TIMEOUT: curl_socket_t = CURL_SOCKET_BAD;
1004
1005pub type curl_socket_callback =
1006    extern "C" fn(*mut CURL, curl_socket_t, c_int, *mut c_void, *mut c_void) -> c_int;
1007pub type curl_multi_timer_callback = extern "C" fn(*mut CURLM, c_long, *mut c_void) -> c_int;
1008
1009pub type CURLMoption = __enum_ty;
1010pub const CURLMOPT_SOCKETFUNCTION: CURLMoption = CURLOPTTYPE_FUNCTIONPOINT + 1;
1011pub const CURLMOPT_SOCKETDATA: CURLMoption = CURLOPTTYPE_OBJECTPOINT + 2;
1012pub const CURLMOPT_PIPELINING: CURLMoption = CURLOPTTYPE_LONG + 3;
1013pub const CURLMOPT_TIMERFUNCTION: CURLMoption = CURLOPTTYPE_FUNCTIONPOINT + 4;
1014pub const CURLMOPT_TIMERDATA: CURLMoption = CURLOPTTYPE_OBJECTPOINT + 5;
1015pub const CURLMOPT_MAXCONNECTS: CURLMoption = CURLOPTTYPE_LONG + 6;
1016pub const CURLMOPT_MAX_HOST_CONNECTIONS: CURLMoption = CURLOPTTYPE_LONG + 7;
1017pub const CURLMOPT_MAX_PIPELINE_LENGTH: CURLMoption = CURLOPTTYPE_LONG + 8;
1018pub const CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE: CURLMoption = CURLOPTTYPE_OFF_T + 9;
1019pub const CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE: CURLMoption = CURLOPTTYPE_OFF_T + 10;
1020pub const CURLMOPT_PIPELINING_SITE_BL: CURLMoption = CURLOPTTYPE_OBJECTPOINT + 11;
1021pub const CURLMOPT_PIPELINING_SERVER_BL: CURLMoption = CURLOPTTYPE_OBJECTPOINT + 12;
1022pub const CURLMOPT_MAX_TOTAL_CONNECTIONS: CURLMoption = CURLOPTTYPE_LONG + 13;
1023pub const CURLMOPT_PUSHFUNCTION: CURLMoption = CURLOPTTYPE_FUNCTIONPOINT + 14;
1024pub const CURLMOPT_PUSHDATA: CURLMoption = CURLOPTTYPE_OBJECTPOINT + 15;
1025pub const CURLMOPT_MAX_CONCURRENT_STREAMS: CURLMoption = CURLOPTTYPE_LONG + 16;
1026
1027// These enums are for use with the CURLMOPT_PIPELINING option.
1028pub const CURLPIPE_NOTHING: c_long = 0;
1029pub const CURLPIPE_HTTP1: c_long = 1;
1030pub const CURLPIPE_MULTIPLEX: c_long = 2;
1031
1032pub const CURL_ERROR_SIZE: usize = 256;
1033
1034pub type curl_opensocket_callback =
1035    extern "C" fn(*mut c_void, curlsocktype, *mut curl_sockaddr) -> curl_socket_t;
1036pub type curlsocktype = __enum_ty;
1037pub const CURLSOCKTYPE_IPCXN: curlsocktype = 0;
1038pub const CURLSOCKTYPE_ACCEPT: curlsocktype = 1;
1039pub const CURLSOCKTYPE_LAST: curlsocktype = 2;
1040
1041#[repr(C)]
1042pub struct curl_sockaddr {
1043    pub family: c_int,
1044    pub socktype: c_int,
1045    pub protocol: c_int,
1046    pub addrlen: c_uint,
1047    #[cfg(unix)]
1048    pub addr: libc::sockaddr,
1049    #[cfg(windows)]
1050    pub addr: SOCKADDR,
1051}
1052
1053extern "C" {
1054    pub fn curl_formadd(
1055        httppost: *mut *mut curl_httppost,
1056        last_post: *mut *mut curl_httppost,
1057        ...
1058    ) -> CURLFORMcode;
1059    pub fn curl_formget(
1060        form: *mut curl_httppost,
1061        arg: *mut c_void,
1062        append: curl_formget_callback,
1063    ) -> c_int;
1064    pub fn curl_formfree(form: *mut curl_httppost);
1065
1066    pub fn curl_version() -> *mut c_char;
1067
1068    pub fn curl_easy_escape(handle: *mut CURL, string: *const c_char, length: c_int)
1069        -> *mut c_char;
1070    pub fn curl_easy_unescape(
1071        handle: *mut CURL,
1072        string: *const c_char,
1073        length: c_int,
1074        outlength: *mut c_int,
1075    ) -> *mut c_char;
1076    pub fn curl_free(p: *mut c_void);
1077
1078    pub fn curl_global_init(flags: c_long) -> CURLcode;
1079    pub fn curl_global_init_mem(
1080        flags: c_long,
1081        m: curl_malloc_callback,
1082        f: curl_free_callback,
1083        r: curl_realloc_callback,
1084        s: curl_strdup_callback,
1085        c: curl_calloc_callback,
1086    ) -> CURLcode;
1087    pub fn curl_global_cleanup();
1088
1089    pub fn curl_slist_append(list: *mut curl_slist, val: *const c_char) -> *mut curl_slist;
1090    pub fn curl_slist_free_all(list: *mut curl_slist);
1091
1092    pub fn curl_getdate(p: *const c_char, _: *const time_t) -> time_t;
1093
1094    pub fn curl_share_init() -> *mut CURLSH;
1095    pub fn curl_share_setopt(sh: *mut CURLSH, opt: CURLSHoption, ...) -> CURLSHcode;
1096    pub fn curl_share_cleanup(sh: *mut CURLSH) -> CURLSHcode;
1097
1098    pub fn curl_version_info(t: CURLversion) -> *mut curl_version_info_data;
1099
1100    pub fn curl_easy_strerror(code: CURLcode) -> *const c_char;
1101    pub fn curl_share_strerror(code: CURLSHcode) -> *const c_char;
1102    pub fn curl_easy_pause(handle: *mut CURL, bitmask: c_int) -> CURLcode;
1103
1104    pub fn curl_easy_init() -> *mut CURL;
1105    pub fn curl_easy_setopt(curl: *mut CURL, option: CURLoption, ...) -> CURLcode;
1106    pub fn curl_easy_perform(curl: *mut CURL) -> CURLcode;
1107    pub fn curl_easy_cleanup(curl: *mut CURL);
1108    pub fn curl_easy_getinfo(curl: *mut CURL, info: CURLINFO, ...) -> CURLcode;
1109    pub fn curl_easy_duphandle(curl: *mut CURL) -> *mut CURL;
1110    pub fn curl_easy_reset(curl: *mut CURL);
1111    pub fn curl_easy_recv(
1112        curl: *mut CURL,
1113        buffer: *mut c_void,
1114        buflen: size_t,
1115        n: *mut size_t,
1116    ) -> CURLcode;
1117    pub fn curl_easy_send(
1118        curl: *mut CURL,
1119        buffer: *const c_void,
1120        buflen: size_t,
1121        n: *mut size_t,
1122    ) -> CURLcode;
1123
1124    #[cfg(feature = "upkeep_7_62_0")]
1125    pub fn curl_easy_upkeep(curl: *mut CURL) -> CURLcode;
1126
1127    pub fn curl_multi_init() -> *mut CURLM;
1128    pub fn curl_multi_add_handle(multi_handle: *mut CURLM, curl_handle: *mut CURL) -> CURLMcode;
1129    pub fn curl_multi_remove_handle(multi_handle: *mut CURLM, curl_handle: *mut CURL) -> CURLMcode;
1130    pub fn curl_multi_fdset(
1131        multi_handle: *mut CURLM,
1132        read_fd_set: *mut fd_set,
1133        write_fd_set: *mut fd_set,
1134        exc_fd_set: *mut fd_set,
1135        max_fd: *mut c_int,
1136    ) -> CURLMcode;
1137    pub fn curl_multi_wait(
1138        multi_handle: *mut CURLM,
1139        extra_fds: *mut curl_waitfd,
1140        extra_nfds: c_uint,
1141        timeout_ms: c_int,
1142        ret: *mut c_int,
1143    ) -> CURLMcode;
1144
1145    #[cfg(feature = "poll_7_68_0")]
1146    pub fn curl_multi_poll(
1147        multi_handle: *mut CURLM,
1148        extra_fds: *mut curl_waitfd,
1149        extra_nfds: c_uint,
1150        timeout_ms: c_int,
1151        ret: *mut c_int,
1152    ) -> CURLMcode;
1153
1154    #[cfg(feature = "poll_7_68_0")]
1155    pub fn curl_multi_wakeup(multi_handle: *mut CURLM) -> CURLMcode;
1156
1157    pub fn curl_multi_perform(multi_handle: *mut CURLM, running_handles: *mut c_int) -> CURLMcode;
1158    pub fn curl_multi_cleanup(multi_handle: *mut CURLM) -> CURLMcode;
1159    pub fn curl_multi_info_read(
1160        multi_handle: *mut CURLM,
1161        msgs_in_queue: *mut c_int,
1162    ) -> *mut CURLMsg;
1163    pub fn curl_multi_strerror(code: CURLMcode) -> *const c_char;
1164    pub fn curl_multi_socket(
1165        multi_handle: *mut CURLM,
1166        s: curl_socket_t,
1167        running_handles: *mut c_int,
1168    ) -> CURLMcode;
1169    pub fn curl_multi_socket_action(
1170        multi_handle: *mut CURLM,
1171        s: curl_socket_t,
1172        ev_bitmask: c_int,
1173        running_handles: *mut c_int,
1174    ) -> CURLMcode;
1175    pub fn curl_multi_socket_all(
1176        multi_handle: *mut CURLM,
1177        running_handles: *mut c_int,
1178    ) -> CURLMcode;
1179    pub fn curl_multi_timeout(multi_handle: *mut CURLM, milliseconds: *mut c_long) -> CURLMcode;
1180    pub fn curl_multi_setopt(multi_handle: *mut CURLM, option: CURLMoption, ...) -> CURLMcode;
1181    pub fn curl_multi_assign(
1182        multi_handle: *mut CURLM,
1183        sockfd: curl_socket_t,
1184        sockp: *mut c_void,
1185    ) -> CURLMcode;
1186}
1187
1188pub fn rust_crate_version() -> &'static str {
1189    env!("CARGO_PKG_VERSION")
1190}
1191
1192#[doc(hidden)]
1193pub fn vendored() -> bool {
1194    cfg!(libcurl_vendored)
1195}