1- '' FreeBASIC binding for curl-7.73 .0
1+ '' FreeBASIC binding for curl-7.85 .0
22''
33'' based on the C header files:
4- '' Copyright (c) 1996 - 2020 , Daniel Stenberg, <[email protected] >, and many 4+ '' Copyright (c) 1996 - 2022 , Daniel Stenberg, <[email protected] >, and many 55'' contributors, see the THANKS file.
66''
77'' All rights reserved.
2323'' in this Software without prior written authorization of the copyright holder.
2424''
2525'' translated to FreeBASIC by:
26- '' Copyright © 2020 FreeBASIC development team
26+ '' Copyright © 2021 FreeBASIC development team
2727
2828#pragma once
2929
@@ -51,13 +51,13 @@ extern "C"
5151
5252#define CURLINC_CURL_H
5353#define CURLINC_CURLVER_H
54- #define LIBCURL_COPYRIGHT "1996 - 2020 Daniel Stenberg, <[email protected] >." 55- #define LIBCURL_VERSION "7.73 .0"
54+ #define LIBCURL_COPYRIGHT "1996 - 2022 Daniel Stenberg, <[email protected] >." 55+ #define LIBCURL_VERSION "7.85 .0"
5656const LIBCURL_VERSION_MAJOR = 7
57- const LIBCURL_VERSION_MINOR = 73
57+ const LIBCURL_VERSION_MINOR = 85
5858const LIBCURL_VERSION_PATCH = 0
59- const LIBCURL_VERSION_NUM = &h074900
60- #define LIBCURL_TIMESTAMP "2020-10-14 "
59+ const LIBCURL_VERSION_NUM = &h075500
60+ #define LIBCURL_TIMESTAMP "2022-08-31 "
6161#define CURL_VERSION_BITS(x, y, z) ((((x) shl 16 ) or ((y) shl 8 )) or (z))
6262#define CURL_AT_LEAST_VERSION(x, y, z) (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
6363#define CURLINC_SYSTEM_H
117117 CURLSSLBACKEND_MBEDTLS = 11
118118 CURLSSLBACKEND_MESALINK = 12
119119 CURLSSLBACKEND_BEARSSL = 13
120+ CURLSSLBACKEND_RUSTLS = 14
120121end enum
121122
122123const CURLSSLBACKEND_LIBRESSL = CURLSSLBACKEND_OPENSSL
286287end enum
287288
288289type curl_debug_callback as function ( byval handle as CURL ptr, byval type as curl_infotype, byval data as zstring ptr, byval size as uinteger, byval userptr as any ptr) as long
290+ type curl_prereq_callback as function ( byval clientp as any ptr, byval conn_primary_ip as zstring ptr, byval conn_local_ip as zstring ptr, byval conn_primary_port as long , byval conn_local_port as long ) as long
291+ const CURL_PREREQFUNC_OK = 0
292+ const CURL_PREREQFUNC_ABORT = 1
289293
290294type CURLcode as long
291295enum
338342 CURLE_OBSOLETE46
339343 CURLE_TOO_MANY_REDIRECTS
340344 CURLE_UNKNOWN_OPTION
341- CURLE_TELNET_OPTION_SYNTAX
345+ CURLE_SETOPT_OPTION_SYNTAX
342346 CURLE_OBSOLETE50
343347 CURLE_OBSOLETE51
344348 CURLE_GOT_NOTHING
351355 CURLE_SSL_CIPHER
352356 CURLE_PEER_FAILED_VERIFICATION
353357 CURLE_BAD_CONTENT_ENCODING
354- CURLE_LDAP_INVALID_URL
358+ CURLE_OBSOLETE62
355359 CURLE_FILESIZE_EXCEEDED
356360 CURLE_USE_SSL_FAILED
357361 CURLE_SEND_FAIL_REWIND
364368 CURLE_TFTP_UNKNOWNID
365369 CURLE_REMOTE_FILE_EXISTS
366370 CURLE_TFTP_NOSUCHUSER
367- CURLE_CONV_FAILED
368- CURLE_CONV_REQD
371+ CURLE_OBSOLETE75
372+ CURLE_OBSOLETE76
369373 CURLE_SSL_CACERT_BADFILE
370374 CURLE_REMOTE_FILE_NOT_FOUND
371375 CURLE_SSH
387391 CURLE_HTTP3
388392 CURLE_QUIC_CONNECT_ERROR
389393 CURLE_PROXY
394+ CURLE_SSL_CLIENTCERT
395+ CURLE_UNRECOVERABLE_POLL
390396 CURL_LAST
391397end enum
392398
@@ -396,6 +402,7 @@ const CURLE_OBSOLETE12 = CURLE_FTP_ACCEPT_TIMEOUT
396402const CURLE_FTP_WEIRD_SERVER_REPLY = CURLE_WEIRD_SERVER_REPLY
397403const CURLE_SSL_CACERT = CURLE_PEER_FAILED_VERIFICATION
398404const CURLE_UNKNOWN_TELNET_OPTION = CURLE_UNKNOWN_OPTION
405+ const CURLE_TELNET_OPTION_SYNTAX = CURLE_SETOPT_OPTION_SYNTAX
399406const CURLE_SSL_PEER_CERTIFICATE = CURLE_PEER_FAILED_VERIFICATION
400407const CURLE_OBSOLETE = CURLE_OBSOLETE50
401408const CURLE_BAD_PASSWORD_ENTERED = CURLE_OBSOLETE46
@@ -423,6 +430,9 @@ const CURLE_HTTP_PORT_FAILED = CURLE_INTERFACE_FAILED
423430const CURLE_FTP_COULDNT_STOR_FILE = CURLE_UPLOAD_FAILED
424431const CURLE_FTP_PARTIAL_FILE = CURLE_PARTIAL_FILE
425432const CURLE_FTP_BAD_DOWNLOAD_RESUME = CURLE_BAD_DOWNLOAD_RESUME
433+ const CURLE_LDAP_INVALID_URL = CURLE_OBSOLETE62
434+ const CURLE_CONV_REQD = CURLE_OBSOLETE76
435+ const CURLE_CONV_FAILED = CURLE_OBSOLETE75
426436const CURLE_ALREADY_COMPLETE = 99999
427437
428438type CURLproxycode as long
@@ -488,6 +498,7 @@ const CURLAUTH_NTLM = cast(culong, 1) shl 3
488498const CURLAUTH_DIGEST_IE = cast(culong, 1 ) shl 4
489499const CURLAUTH_NTLM_WB = cast(culong, 1 ) shl 5
490500const CURLAUTH_BEARER = cast(culong, 1 ) shl 6
501+ const CURLAUTH_AWS_SIGV4 = cast(culong, 1 ) shl 7
491502const CURLAUTH_ONLY = cast(culong, 1 ) shl 31
492503const CURLAUTH_ANY = not CURLAUTH_DIGEST_IE
493504const CURLAUTH_ANYSAFE = not (CURLAUTH_BASIC or CURLAUTH_DIGEST_IE)
540551end enum
541552
542553type curl_sshkeycallback as function ( byval easy as CURL ptr, byval knownkey as const curl_khkey ptr, byval foundkey as const curl_khkey ptr, byval as curl_khmatch, byval clientp as any ptr) as long
554+ type curl_sshhostkeycallback as function ( byval clientp as any ptr, byval keytype as long , byval key as const zstring ptr, byval keylen as uinteger) as long
543555
544556type curl_usessl as long
545557enum
@@ -555,6 +567,7 @@ const CURLSSLOPT_NO_REVOKE = 1 shl 1
555567const CURLSSLOPT_NO_PARTIALCHAIN = 1 shl 2
556568const CURLSSLOPT_REVOKE_BEST_EFFORT = 1 shl 3
557569const CURLSSLOPT_NATIVE_CA = 1 shl 4
570+ const CURLSSLOPT_AUTO_CLIENT_CERT = 1 shl 5
558571const CURL_HET_DEFAULT = cast(clong, 200 )
559572const CURL_UPKEEP_INTERVAL_DEFAULT = cast(clong, 60000 )
560573const CURLFTPSSL_NONE = CURLUSESSL_NONE
@@ -599,11 +612,34 @@ end enum
599612
600613const CURLHEADER_UNIFIED = 0
601614const CURLHEADER_SEPARATE = 1 shl 0
602- const CURLALTSVC_IMMEDIATELY = 1 shl 0
603615const CURLALTSVC_READONLYFILE = 1 shl 2
604616const CURLALTSVC_H1 = 1 shl 3
605617const CURLALTSVC_H2 = 1 shl 4
606618const CURLALTSVC_H3 = 1 shl 5
619+
620+ type curl_hstsentry
621+ name as zstring ptr
622+ namelen as uinteger
623+ includeSubDomains : 1 as ulong
624+ expire as zstring * 18
625+ end type
626+
627+ type curl_index
628+ index as uinteger
629+ total as uinteger
630+ end type
631+
632+ type CURLSTScode as long
633+ enum
634+ CURLSTS_OK
635+ CURLSTS_DONE
636+ CURLSTS_FAIL
637+ end enum
638+
639+ type curl_hstsread_callback as function ( byval easy as CURL ptr, byval e as curl_hstsentry ptr, byval userp as any ptr) as CURLSTScode
640+ type curl_hstswrite_callback as function ( byval easy as CURL ptr, byval e as curl_hstsentry ptr, byval i as curl_index ptr, byval userp as any ptr) as CURLSTScode
641+ const CURLHSTS_ENABLE = cast(clong, 1 shl 0 )
642+ const CURLHSTS_READONLYFILE = cast(clong, 1 shl 1 )
607643const CURLPROTO_HTTP = 1 shl 0
608644const CURLPROTO_HTTPS = 1 shl 1
609645const CURLPROTO_FTP = 1 shl 2
@@ -633,6 +669,7 @@ const CURLPROTO_GOPHER = 1 shl 25
633669const CURLPROTO_SMB = 1 shl 26
634670const CURLPROTO_SMBS = 1 shl 27
635671const CURLPROTO_MQTT = 1 shl 28
672+ const CURLPROTO_GOPHERS = 1 shl 29
636673const CURLPROTO_ALL = not 0
637674const CURLOPTTYPE_LONG = 0
638675const CURLOPTTYPE_OBJECTPOINT = 10000
749786 CURLOPT_SSL_CTX_DATA = CURLOPTTYPE_OBJECTPOINT + 109
750787 CURLOPT_FTP_CREATE_MISSING_DIRS = CURLOPTTYPE_LONG + 110
751788 CURLOPT_PROXYAUTH = CURLOPTTYPE_LONG + 111
752- CURLOPT_FTP_RESPONSE_TIMEOUT = CURLOPTTYPE_LONG + 112
789+ CURLOPT_SERVER_RESPONSE_TIMEOUT = CURLOPTTYPE_LONG + 112
753790 CURLOPT_IPRESOLVE = CURLOPTTYPE_LONG + 113
754791 CURLOPT_MAXFILESIZE = CURLOPTTYPE_LONG + 114
755792 CURLOPT_INFILESIZE_LARGE = CURLOPTTYPE_OFF_T + 115
@@ -919,14 +956,35 @@ enum
919956 CURLOPT_MAXAGE_CONN = CURLOPTTYPE_LONG + 288
920957 CURLOPT_SASL_AUTHZID = CURLOPTTYPE_OBJECTPOINT + 289
921958 CURLOPT_MAIL_RCPT_ALLLOWFAILS = CURLOPTTYPE_LONG + 290
922- CURLOPT_SSLCERT_BLOB = 40000 + 291
923- CURLOPT_SSLKEY_BLOB = 40000 + 292
924- CURLOPT_PROXY_SSLCERT_BLOB = 40000 + 293
925- CURLOPT_PROXY_SSLKEY_BLOB = 40000 + 294
926- CURLOPT_ISSUERCERT_BLOB = 40000 + 295
959+ CURLOPT_SSLCERT_BLOB = CURLOPTTYPE_BLOB + 291
960+ CURLOPT_SSLKEY_BLOB = CURLOPTTYPE_BLOB + 292
961+ CURLOPT_PROXY_SSLCERT_BLOB = CURLOPTTYPE_BLOB + 293
962+ CURLOPT_PROXY_SSLKEY_BLOB = CURLOPTTYPE_BLOB + 294
963+ CURLOPT_ISSUERCERT_BLOB = CURLOPTTYPE_BLOB + 295
927964 CURLOPT_PROXY_ISSUERCERT = CURLOPTTYPE_OBJECTPOINT + 296
928- CURLOPT_PROXY_ISSUERCERT_BLOB = 40000 + 297
965+ CURLOPT_PROXY_ISSUERCERT_BLOB = CURLOPTTYPE_BLOB + 297
929966 CURLOPT_SSL_EC_CURVES = CURLOPTTYPE_OBJECTPOINT + 298
967+ CURLOPT_HSTS_CTRL = CURLOPTTYPE_LONG + 299
968+ CURLOPT_HSTS = CURLOPTTYPE_OBJECTPOINT + 300
969+ CURLOPT_HSTSREADFUNCTION = CURLOPTTYPE_FUNCTIONPOINT + 301
970+ CURLOPT_HSTSREADDATA = CURLOPTTYPE_OBJECTPOINT + 302
971+ CURLOPT_HSTSWRITEFUNCTION = CURLOPTTYPE_FUNCTIONPOINT + 303
972+ CURLOPT_HSTSWRITEDATA = CURLOPTTYPE_OBJECTPOINT + 304
973+ CURLOPT_AWS_SIGV4 = CURLOPTTYPE_OBJECTPOINT + 305
974+ CURLOPT_DOH_SSL_VERIFYPEER = CURLOPTTYPE_LONG + 306
975+ CURLOPT_DOH_SSL_VERIFYHOST = CURLOPTTYPE_LONG + 307
976+ CURLOPT_DOH_SSL_VERIFYSTATUS = CURLOPTTYPE_LONG + 308
977+ CURLOPT_CAINFO_BLOB = CURLOPTTYPE_BLOB + 309
978+ CURLOPT_PROXY_CAINFO_BLOB = CURLOPTTYPE_BLOB + 310
979+ CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 = CURLOPTTYPE_OBJECTPOINT + 311
980+ CURLOPT_PREREQFUNCTION = CURLOPTTYPE_FUNCTIONPOINT + 312
981+ CURLOPT_PREREQDATA = CURLOPTTYPE_OBJECTPOINT + 313
982+ CURLOPT_MAXLIFETIME_CONN = CURLOPTTYPE_LONG + 314
983+ CURLOPT_MIME_OPTIONS = CURLOPTTYPE_LONG + 315
984+ CURLOPT_SSH_HOSTKEYFUNCTION = CURLOPTTYPE_FUNCTIONPOINT + 316
985+ CURLOPT_SSH_HOSTKEYDATA = CURLOPTTYPE_OBJECTPOINT + 317
986+ CURLOPT_PROTOCOLS_STR = CURLOPTTYPE_OBJECTPOINT + 318
987+ CURLOPT_REDIR_PROTOCOLS_STR = CURLOPTTYPE_OBJECTPOINT + 319
930988 CURLOPT_LASTENTRY
931989end enum
932990
@@ -937,14 +995,14 @@ const CURLOPT_WRITEHEADER = CURLOPT_HEADERDATA
937995const CURLOPT_INFILE = CURLOPT_READDATA
938996const CURLOPT_FILE = CURLOPT_WRITEDATA
939997const CURLOPT_PROGRESSDATA = CURLOPT_XFERINFODATA
940- const CURLOPT_SERVER_RESPONSE_TIMEOUT = CURLOPT_FTP_RESPONSE_TIMEOUT
941998const CURLOPT_POST301 = CURLOPT_POSTREDIR
942999const CURLOPT_SSLKEYPASSWD = CURLOPT_KEYPASSWD
9431000const CURLOPT_FTPAPPEND = CURLOPT_APPEND
9441001const CURLOPT_FTPLISTONLY = CURLOPT_DIRLISTONLY
9451002const CURLOPT_FTP_SSL = CURLOPT_USE_SSL
9461003const CURLOPT_SSLCERTPASSWD = CURLOPT_KEYPASSWD
9471004const CURLOPT_KRB4LEVEL = CURLOPT_KRBLEVEL
1005+ const CURLOPT_FTP_RESPONSE_TIMEOUT = CURLOPT_SERVER_RESPONSE_TIMEOUT
9481006const CURL_IPRESOLVE_WHATEVER = 0
9491007const CURL_IPRESOLVE_V4 = 1
9501008const CURL_IPRESOLVE_V6 = 2
@@ -1034,6 +1092,7 @@ end enum
10341092const CURL_ZERO_TERMINATED = cuint(- 1 )
10351093declare function curl_strequal( byval s1 as const zstring ptr, byval s2 as const zstring ptr) as long
10361094declare function curl_strnequal( byval s1 as const zstring ptr, byval s2 as const zstring ptr, byval n as uinteger) as long
1095+ const CURLMIMEOPT_FORMESCAPE = 1 shl 0
10371096type curl_mime as curl_mime_
10381097declare function curl_mime_init( byval easy as CURL ptr) as curl_mime ptr
10391098declare sub curl_mime_free( byval mime as curl_mime ptr)
@@ -1220,7 +1279,10 @@ enum
12201279 CURLINFO_RETRY_AFTER = CURLINFO_OFF_T + 57
12211280 CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58
12221281 CURLINFO_PROXY_ERROR = CURLINFO_LONG + 59
1223- CURLINFO_LASTONE = 59
1282+ CURLINFO_REFERER = CURLINFO_STRING + 60
1283+ CURLINFO_CAINFO = CURLINFO_STRING + 61
1284+ CURLINFO_CAPATH = CURLINFO_STRING + 62
1285+ CURLINFO_LASTONE = 62
12241286end enum
12251287
12261288const CURLINFO_HTTP_CODE = CURLINFO_RESPONSE_CODE
@@ -1302,10 +1364,12 @@ enum
13021364 CURLVERSION_SIXTH
13031365 CURLVERSION_SEVENTH
13041366 CURLVERSION_EIGHTH
1367+ CURLVERSION_NINTH
1368+ CURLVERSION_TENTH
13051369 CURLVERSION_LAST
13061370end enum
13071371
1308- const CURLVERSION_NOW = CURLVERSION_EIGHTH
1372+ const CURLVERSION_NOW = CURLVERSION_TENTH
13091373
13101374type curl_version_info_data
13111375 age as CURLversion
@@ -1331,6 +1395,8 @@ type curl_version_info_data
13311395 capath as const zstring ptr
13321396 zstd_ver_num as ulong
13331397 zstd_version as const zstring ptr
1398+ hyper_version as const zstring ptr
1399+ gsasl_version as const zstring ptr
13341400end type
13351401
13361402const CURL_VERSION_IPV6 = 1 shl 0
@@ -1361,6 +1427,9 @@ const CURL_VERSION_ALTSVC = 1 shl 24
13611427const CURL_VERSION_HTTP3 = 1 shl 25
13621428const CURL_VERSION_ZSTD = 1 shl 26
13631429const CURL_VERSION_UNICODE = 1 shl 27
1430+ const CURL_VERSION_HSTS = 1 shl 28
1431+ const CURL_VERSION_GSASL = 1 shl 29
1432+ const CURL_VERSION_THREADSAFE = 1 shl 30
13641433
13651434declare function curl_version_info( byval as CURLversion) as curl_version_info_data ptr
13661435declare function curl_easy_strerror( byval as CURLcode) as const zstring ptr
@@ -1410,6 +1479,8 @@ enum
14101479 CURLM_RECURSIVE_API_CALL
14111480 CURLM_WAKEUP_FAILURE
14121481 CURLM_BAD_FUNCTION_ARGUMENT
1482+ CURLM_ABORTED_BY_CALLBACK
1483+ CURLM_UNRECOVERABLE_POLL
14131484 CURLM_LAST
14141485end enum
14151486
@@ -1534,6 +1605,19 @@ enum
15341605 CURLUE_NO_PORT
15351606 CURLUE_NO_QUERY
15361607 CURLUE_NO_FRAGMENT
1608+ CURLUE_NO_ZONEID
1609+ CURLUE_BAD_FILE_URL
1610+ CURLUE_BAD_FRAGMENT
1611+ CURLUE_BAD_HOSTNAME
1612+ CURLUE_BAD_IPV6
1613+ CURLUE_BAD_LOGIN
1614+ CURLUE_BAD_PASSWORD
1615+ CURLUE_BAD_PATH
1616+ CURLUE_BAD_QUERY
1617+ CURLUE_BAD_SCHEME
1618+ CURLUE_BAD_SLASHES
1619+ CURLUE_BAD_USER
1620+ CURLUE_LAST
15371621end enum
15381622
15391623type CURLUPart as long
@@ -1562,13 +1646,15 @@ const CURLU_URLENCODE = 1 shl 7
15621646const CURLU_APPENDQUERY = 1 shl 8
15631647const CURLU_GUESS_SCHEME = 1 shl 9
15641648const CURLU_NO_AUTHORITY = 1 shl 10
1649+ const CURLU_ALLOW_SPACE = 1 shl 11
15651650type CURLU as Curl_URL
15661651
15671652declare function curl_url() as CURLU ptr
15681653declare sub curl_url_cleanup( byval handle as CURLU ptr)
15691654declare function curl_url_dup( byval in as CURLU ptr) as CURLU ptr
15701655declare function curl_url_get( byval handle as CURLU ptr, byval what as CURLUPart, byval part as zstring ptr ptr, byval flags as ulong) as CURLUcode
15711656declare function curl_url_set( byval handle as CURLU ptr, byval what as CURLUPart, byval part as const zstring ptr, byval flags as ulong) as CURLUcode
1657+ declare function curl_url_strerror( byval as CURLUcode) as const zstring ptr
15721658#define CURLINC_OPTIONS_H
15731659
15741660type curl_easytype as long
@@ -1596,5 +1682,36 @@ end type
15961682declare function curl_easy_option_by_name( byval name as const zstring ptr) as const curl_easyoption ptr
15971683declare function curl_easy_option_by_id( byval id as CURLoption) as const curl_easyoption ptr
15981684declare function curl_easy_option_next( byval prev as const curl_easyoption ptr) as const curl_easyoption ptr
1685+ #define CURLINC_HEADER_H
1686+
1687+ type curl_header
1688+ name as zstring ptr
1689+ value as zstring ptr
1690+ amount as uinteger
1691+ index as uinteger
1692+ origin as ulong
1693+ anchor as any ptr
1694+ end type
1695+
1696+ const CURLH_HEADER = 1 shl 0
1697+ const CURLH_TRAILER = 1 shl 1
1698+ const CURLH_CONNECT = 1 shl 2
1699+ const CURLH_1XX = 1 shl 3
1700+ const CURLH_PSEUDO = 1 shl 4
1701+
1702+ type CURLHcode as long
1703+ enum
1704+ CURLHE_OK
1705+ CURLHE_BADINDEX
1706+ CURLHE_MISSING
1707+ CURLHE_NOHEADERS
1708+ CURLHE_NOREQUEST
1709+ CURLHE_OUT_OF_MEMORY
1710+ CURLHE_BAD_ARGUMENT
1711+ CURLHE_NOT_BUILT_IN
1712+ end enum
1713+
1714+ declare function curl_easy_header( byval easy as CURL ptr, byval name as const zstring ptr, byval index as uinteger, byval origin as ulong, byval request as long , byval hout as curl_header ptr ptr) as CURLHcode
1715+ declare function curl_easy_nextheader( byval easy as CURL ptr, byval origin as ulong, byval request as long , byval prev as curl_header ptr) as curl_header ptr
15991716
16001717end extern
0 commit comments