00001
00002
00003
00004
00005 #ifndef __CURL_CURL_H
00006 #define __CURL_CURL_H
00007
00008 #include "curlver.h"
00009
00010 #include <stdio.h>
00011 #include <limits.h>
00012
00013 #ifdef vms
00014 # include <types.h>
00015 # include <time.h>
00016 #else
00017 # include <sys/types.h>
00018 # include <time.h>
00019 #endif
00020
00021 typedef void CURL;
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00027 #if (defined(WIN32) || defined(_WIN32)) && !defined(CURL_STATICLIB)
00028 #if defined(BUILDING_LIBCURL)
00029 #define CURL_EXTERN __declspec(dllexport)
00030 #else
00031 #define CURL_EXTERN __declspec(dllimport)
00032 #endif
00033 #else
00034
00035 #ifdef CURL_HIDDEN_SYMBOLS
00036
00037 #define CURL_EXTERN CURL_EXTERN_SYMBOL
00038 #else
00039 #define CURL_EXTERN
00040 #endif
00041 #endif
00042
00043 #if (defined(_MSC_VER) && !defined(__POCC__)) || (defined(__LCC__) && defined(WIN32))
00044
00045 #ifdef _WIN32_WCE
00046 typedef long curl_off_t;
00047 #define CURL_FORMAT_OFF_T "%ld"
00048 #else
00049 typedef signed __int64 curl_off_t;
00050 #define CURL_FORMAT_OFF_T "%I64d"
00051 #endif
00052 #else
00053 #if (defined(__GNUC__) && defined(WIN32)) || defined(__WATCOMC__)
00054
00055 typedef long long curl_off_t;
00056 #define CURL_FORMAT_OFF_T "%I64d"
00057 #else
00058
00059 typedef off_t curl_off_t;
00060
00061 #ifndef _FILE_OFFSET_BITS
00062 #define _FILE_OFFSET_BITS 0
00063 #define UNDEF_FILE_OFFSET_BITS
00064 #endif
00065 #ifndef FILESIZEBITS
00066 #define FILESIZEBITS 0
00067 #define UNDEF_FILESIZEBITS
00068 #endif
00069
00070 #if defined(_LARGE_FILES) || (_FILE_OFFSET_BITS > 32) || (FILESIZEBITS > 32) \
00071 || defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE)
00072
00073 #define CURL_FORMAT_OFF_T "%lld"
00074 #else
00075 #define CURL_FORMAT_OFF_T "%ld"
00076 #endif
00077 #endif
00078 #endif
00079
00080 #ifdef UNDEF_FILE_OFFSET_BITS
00081
00082 #undef _FILE_OFFSET_BITS
00083 #endif
00084
00085 #ifdef UNDEF_FILESIZEBITS
00086
00087 #undef FILESIZEBITS
00088 #endif
00089
00090 #if defined(_WIN32) && !defined(WIN32)
00091
00092 #define WIN32 1
00093 #endif
00094
00095 #if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__GNUC__) && \
00096 !defined(__CYGWIN__) || defined(__MINGW32__)
00097 #if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H))
00098
00099 #include <winsock2.h>
00100 #endif
00101 #else
00102
00103 #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || defined(__minix)
00104 #include <sys/select.h>
00105 #endif
00106
00107 #ifndef _WIN32_WCE
00108 #include <sys/socket.h>
00109 #endif
00110 #ifndef __WATCOMC__
00111 #include <sys/time.h>
00112 #endif
00113 #include <sys/types.h>
00114 #endif
00115
00116 #ifndef curl_socket_typedef
00117
00118 #ifdef WIN32
00119 typedef SOCKET curl_socket_t;
00120 #define CURL_SOCKET_BAD INVALID_SOCKET
00121 #else
00122 typedef int curl_socket_t;
00123 #define CURL_SOCKET_BAD -1
00124 #endif
00125 #define curl_socket_typedef
00126 #endif
00127
00128 struct curl_httppost {
00129 struct curl_httppost *next;
00130 char *name;
00131 long namelength;
00132 char *contents;
00133 long contentslength;
00134 char *buffer;
00135 long bufferlength;
00136 char *contenttype;
00137 struct curl_slist* contentheader;
00138 struct curl_httppost *more;
00139 long flags;
00140 #define HTTPPOST_FILENAME (1<<0)
00141 #define HTTPPOST_READFILE (1<<1)
00142 #define HTTPPOST_PTRNAME (1<<2)
00143 #define HTTPPOST_PTRCONTENTS (1<<3)
00144 #define HTTPPOST_BUFFER (1<<4)
00145 #define HTTPPOST_PTRBUFFER (1<<5)
00146
00147 char *showfilename;
00148 };
00149
00150 typedef int (*curl_progress_callback)(void *clientp,
00151 double dltotal,
00152 double dlnow,
00153 double ultotal,
00154 double ulnow);
00155
00156 #ifndef CURL_MAX_WRITE_SIZE
00157
00158 #define CURL_MAX_WRITE_SIZE 16384
00159 #endif
00160
00161 typedef size_t (*curl_write_callback)(char *buffer,
00162 size_t size,
00163 size_t nitems,
00164 void *outstream);
00165
00166 #define CURL_READFUNC_ABORT 0x10000000
00167 typedef size_t (*curl_read_callback)(char *buffer,
00168 size_t size,
00169 size_t nitems,
00170 void *instream);
00171
00172 typedef enum {
00173 CURLSOCKTYPE_IPCXN,
00174 CURLSOCKTYPE_LAST
00175 } curlsocktype;
00176
00177 typedef int (*curl_sockopt_callback)(void *clientp,
00178 curl_socket_t curlfd,
00179 curlsocktype purpose);
00180
00181 #ifndef CURL_NO_OLDIES
00182
00183 typedef int (*curl_passwd_callback)(void *clientp,
00184 const char *prompt,
00185 char *buffer,
00186 int buflen);
00187 #endif
00188
00189 typedef enum {
00190 CURLIOE_OK,
00191 CURLIOE_UNKNOWNCMD,
00192 CURLIOE_FAILRESTART,
00193 CURLIOE_LAST
00194 } curlioerr;
00195
00196 typedef enum {
00197 CURLIOCMD_NOP,
00198 CURLIOCMD_RESTARTREAD,
00199 CURLIOCMD_LAST
00200 } curliocmd;
00201
00202 typedef curlioerr (*curl_ioctl_callback)(CURL *handle,
00203 int cmd,
00204 void *clientp);
00205
00206 typedef void *(*curl_malloc_callback)(size_t size);
00207 typedef void (*curl_free_callback)(void *ptr);
00208 typedef void *(*curl_realloc_callback)(void *ptr, size_t size);
00209 typedef char *(*curl_strdup_callback)(const char *str);
00210 typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);
00211
00212 typedef enum {
00213 CURLINFO_TEXT = 0,
00214 CURLINFO_HEADER_IN,
00215 CURLINFO_HEADER_OUT,
00216 CURLINFO_DATA_IN,
00217 CURLINFO_DATA_OUT,
00218 CURLINFO_SSL_DATA_IN,
00219 CURLINFO_SSL_DATA_OUT,
00220 CURLINFO_END
00221 } curl_infotype;
00222
00223 typedef int (*curl_debug_callback)
00224 (CURL *handle,
00225 curl_infotype type,
00226 char *data,
00227 size_t size,
00228 void *userptr);
00229
00230 typedef enum {
00231 CURLE_OK = 0,
00232 CURLE_UNSUPPORTED_PROTOCOL,
00233 CURLE_FAILED_INIT,
00234 CURLE_URL_MALFORMAT,
00235 CURLE_URL_MALFORMAT_USER,
00236 CURLE_COULDNT_RESOLVE_PROXY,
00237 CURLE_COULDNT_RESOLVE_HOST,
00238 CURLE_COULDNT_CONNECT,
00239 CURLE_FTP_WEIRD_SERVER_REPLY,
00240 CURLE_FTP_ACCESS_DENIED,
00241 CURLE_FTP_USER_PASSWORD_INCORRECT,
00242 CURLE_FTP_WEIRD_PASS_REPLY,
00243 CURLE_FTP_WEIRD_USER_REPLY,
00244 CURLE_FTP_WEIRD_PASV_REPLY,
00245 CURLE_FTP_WEIRD_227_FORMAT,
00246 CURLE_FTP_CANT_GET_HOST,
00247 CURLE_FTP_CANT_RECONNECT,
00248 CURLE_FTP_COULDNT_SET_BINARY,
00249 CURLE_PARTIAL_FILE,
00250 CURLE_FTP_COULDNT_RETR_FILE,
00251 CURLE_FTP_WRITE_ERROR,
00252 CURLE_FTP_QUOTE_ERROR,
00253 CURLE_HTTP_RETURNED_ERROR,
00254 CURLE_WRITE_ERROR,
00255 CURLE_MALFORMAT_USER,
00256 CURLE_UPLOAD_FAILED,
00257 CURLE_READ_ERROR,
00258 CURLE_OUT_OF_MEMORY,
00259
00260 CURLE_OPERATION_TIMEOUTED,
00261 CURLE_FTP_COULDNT_SET_ASCII,
00262 CURLE_FTP_PORT_FAILED,
00263 CURLE_FTP_COULDNT_USE_REST,
00264 CURLE_FTP_COULDNT_GET_SIZE,
00265 CURLE_HTTP_RANGE_ERROR,
00266 CURLE_HTTP_POST_ERROR,
00267 CURLE_SSL_CONNECT_ERROR,
00268 CURLE_BAD_DOWNLOAD_RESUME,
00269 CURLE_FILE_COULDNT_READ_FILE,
00270 CURLE_LDAP_CANNOT_BIND,
00271 CURLE_LDAP_SEARCH_FAILED,
00272 CURLE_LIBRARY_NOT_FOUND,
00273 CURLE_FUNCTION_NOT_FOUND,
00274 CURLE_ABORTED_BY_CALLBACK,
00275 CURLE_BAD_FUNCTION_ARGUMENT,
00276 CURLE_BAD_CALLING_ORDER,
00277 CURLE_INTERFACE_FAILED,
00278 CURLE_BAD_PASSWORD_ENTERED,
00279 CURLE_TOO_MANY_REDIRECTS ,
00280 CURLE_UNKNOWN_TELNET_OPTION,
00281 CURLE_TELNET_OPTION_SYNTAX ,
00282 CURLE_OBSOLETE,
00283 CURLE_SSL_PEER_CERTIFICATE,
00284 CURLE_GOT_NOTHING,
00285 CURLE_SSL_ENGINE_NOTFOUND,
00286 CURLE_SSL_ENGINE_SETFAILED,
00287 CURLE_SEND_ERROR,
00288 CURLE_RECV_ERROR,
00289 CURLE_SHARE_IN_USE,
00290 CURLE_SSL_CERTPROBLEM,
00291 CURLE_SSL_CIPHER,
00292 CURLE_SSL_CACERT,
00293 CURLE_BAD_CONTENT_ENCODING,
00294 CURLE_LDAP_INVALID_URL,
00295 CURLE_FILESIZE_EXCEEDED,
00296 CURLE_FTP_SSL_FAILED,
00297 CURLE_SEND_FAIL_REWIND,
00298 CURLE_SSL_ENGINE_INITFAILED,
00299 CURLE_LOGIN_DENIED,
00300 CURLE_TFTP_NOTFOUND,
00301 CURLE_TFTP_PERM,
00302 CURLE_TFTP_DISKFULL,
00303 CURLE_TFTP_ILLEGAL,
00304 CURLE_TFTP_UNKNOWNID,
00305 CURLE_TFTP_EXISTS,
00306 CURLE_TFTP_NOSUCHUSER,
00307 CURLE_CONV_FAILED,
00308 CURLE_CONV_REQD,
00309 CURLE_SSL_CACERT_BADFILE,
00310 CURLE_REMOTE_FILE_NOT_FOUND,
00311 CURLE_SSH,
00312
00313 CURLE_SSL_SHUTDOWN_FAILED,
00314 CURL_LAST
00315 } CURLcode;
00316
00317 typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);
00318
00319 typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl,
00320 void *ssl_ctx,
00321 void *userptr);
00322
00323 #define CURLE_OPERATION_TIMEDOUT CURLE_OPERATION_TIMEOUTED
00324
00325 #ifndef CURL_NO_OLDIES
00326
00327 #define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
00328 #define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
00329 #define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
00330 #endif
00331
00332 typedef enum {
00333 CURLPROXY_HTTP = 0,
00334 CURLPROXY_SOCKS4 = 4,
00335 CURLPROXY_SOCKS5 = 5
00336 } curl_proxytype;
00337
00338 #define CURLAUTH_NONE 0
00339 #define CURLAUTH_BASIC (1<<0)
00340 #define CURLAUTH_DIGEST (1<<1)
00341 #define CURLAUTH_GSSNEGOTIATE (1<<2)
00342 #define CURLAUTH_NTLM (1<<3)
00343 #define CURLAUTH_ANY ~0
00344 #define CURLAUTH_ANYSAFE (~CURLAUTH_BASIC)
00345
00346 #define CURLSSH_AUTH_ANY ~0
00347 #define CURLSSH_AUTH_NONE 0
00348 #define CURLSSH_AUTH_PUBLICKEY (1<<0)
00349 #define CURLSSH_AUTH_PASSWORD (1<<1)
00350 #define CURLSSH_AUTH_HOST (1<<2)
00351 #define CURLSSH_AUTH_KEYBOARD (1<<3)
00352 #define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY
00353
00354 #ifndef CURL_NO_OLDIES
00355
00356 #define CURLE_ALREADY_COMPLETE 99999
00357
00358 #define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
00359 #define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
00360 #endif
00361
00362 #define CURL_ERROR_SIZE 256
00363
00364 typedef enum {
00365 CURLFTPSSL_NONE,
00366 CURLFTPSSL_TRY,
00367 CURLFTPSSL_CONTROL,
00368 CURLFTPSSL_ALL,
00369 CURLFTPSSL_LAST
00370 } curl_ftpssl;
00371
00372 typedef enum {
00373 CURLFTPSSL_CCC_NONE,
00374 CURLFTPSSL_CCC_PASSIVE,
00375 CURLFTPSSL_CCC_ACTIVE,
00376 CURLFTPSSL_CCC_LAST
00377 } curl_ftpccc;
00378
00379 typedef enum {
00380 CURLFTPAUTH_DEFAULT,
00381 CURLFTPAUTH_SSL,
00382 CURLFTPAUTH_TLS,
00383 CURLFTPAUTH_LAST
00384 } curl_ftpauth;
00385
00386 typedef enum {
00387 CURLFTPMETHOD_DEFAULT,
00388 CURLFTPMETHOD_MULTICWD,
00389 CURLFTPMETHOD_NOCWD,
00390 CURLFTPMETHOD_SINGLECWD,
00391 CURLFTPMETHOD_LAST
00392 } curl_ftpmethod;
00393
00394 #define CURLOPTTYPE_LONG 0
00395 #define CURLOPTTYPE_OBJECTPOINT 10000
00396 #define CURLOPTTYPE_FUNCTIONPOINT 20000
00397 #define CURLOPTTYPE_OFF_T 30000
00398
00399 #ifdef CINIT
00400 #undef CINIT
00401 #endif
00402
00403 #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
00404 defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
00405 defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__)
00406
00407 #define CURL_ISOCPP
00408 #else
00409
00410 #undef CURL_ISOCPP
00411 #endif
00412
00413 #ifdef CURL_ISOCPP
00414 #define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
00415 #else
00416
00417 #define LONG CURLOPTTYPE_LONG
00418 #define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT
00419 #define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
00420 #define OFF_T CURLOPTTYPE_OFF_T
00421 #define CINIT(name,type,number) CURLOPT_name = type + number
00422 #endif
00423
00424 typedef enum {
00425
00426 CINIT(FILE, OBJECTPOINT, 1),
00427
00428
00429 CINIT(URL, OBJECTPOINT, 2),
00430
00431
00432 CINIT(PORT, LONG, 3),
00433
00434
00435 CINIT(PROXY, OBJECTPOINT, 4),
00436
00437
00438 CINIT(USERPWD, OBJECTPOINT, 5),
00439
00440
00441 CINIT(PROXYUSERPWD, OBJECTPOINT, 6),
00442
00443
00444 CINIT(RANGE, OBJECTPOINT, 7),
00445
00446
00447
00448
00449 CINIT(INFILE, OBJECTPOINT, 9),
00450
00451
00452 CINIT(ERRORBUFFER, OBJECTPOINT, 10),
00453
00454
00455 CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11),
00456
00457
00458 CINIT(READFUNCTION, FUNCTIONPOINT, 12),
00459
00460
00461 CINIT(TIMEOUT, LONG, 13),
00462
00463
00464 CINIT(INFILESIZE, LONG, 14),
00465
00466
00467 CINIT(POSTFIELDS, OBJECTPOINT, 15),
00468
00469
00470 CINIT(REFERER, OBJECTPOINT, 16),
00471
00472
00473 CINIT(FTPPORT, OBJECTPOINT, 17),
00474
00475
00476 CINIT(USERAGENT, OBJECTPOINT, 18),
00477
00478
00479
00480
00481 CINIT(LOW_SPEED_LIMIT, LONG , 19),
00482
00483
00484 CINIT(LOW_SPEED_TIME, LONG, 20),
00485
00486
00487 CINIT(RESUME_FROM, LONG, 21),
00488
00489
00490 CINIT(COOKIE, OBJECTPOINT, 22),
00491
00492
00493 CINIT(HTTPHEADER, OBJECTPOINT, 23),
00494
00495
00496 CINIT(HTTPPOST, OBJECTPOINT, 24),
00497
00498
00499 CINIT(SSLCERT, OBJECTPOINT, 25),
00500
00501
00502 CINIT(SSLCERTPASSWD, OBJECTPOINT, 26),
00503
00504 CINIT(SSLKEYPASSWD, OBJECTPOINT, 26),
00505
00506
00507 CINIT(CRLF, LONG, 27),
00508
00509
00510 CINIT(QUOTE, OBJECTPOINT, 28),
00511
00512
00513 CINIT(WRITEHEADER, OBJECTPOINT, 29),
00514
00515
00516 CINIT(COOKIEFILE, OBJECTPOINT, 31),
00517
00518
00519 CINIT(SSLVERSION, LONG, 32),
00520
00521
00522 CINIT(TIMECONDITION, LONG, 33),
00523
00524
00525 CINIT(TIMEVALUE, LONG, 34),
00526
00527
00528
00529
00530 CINIT(CUSTOMREQUEST, OBJECTPOINT, 36),
00531
00532
00533 CINIT(STDERR, OBJECTPOINT, 37),
00534
00535
00536
00537
00538 CINIT(POSTQUOTE, OBJECTPOINT, 39),
00539
00540
00541 CINIT(WRITEINFO, OBJECTPOINT, 40),
00542
00543 CINIT(VERBOSE, LONG, 41),
00544 CINIT(HEADER, LONG, 42),
00545 CINIT(NOPROGRESS, LONG, 43),
00546 CINIT(NOBODY, LONG, 44),
00547 CINIT(FAILONERROR, LONG, 45),
00548 CINIT(UPLOAD, LONG, 46),
00549 CINIT(POST, LONG, 47),
00550 CINIT(FTPLISTONLY, LONG, 48),
00551
00552 CINIT(FTPAPPEND, LONG, 50),
00553
00554
00555 CINIT(NETRC, LONG, 51),
00556
00557 CINIT(FOLLOWLOCATION, LONG, 52),
00558
00559 CINIT(TRANSFERTEXT, LONG, 53),
00560 CINIT(PUT, LONG, 54),
00561
00562
00563
00564
00565 CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56),
00566
00567
00568 CINIT(PROGRESSDATA, OBJECTPOINT, 57),
00569
00570
00571 CINIT(AUTOREFERER, LONG, 58),
00572
00573
00574 CINIT(PROXYPORT, LONG, 59),
00575
00576
00577 CINIT(POSTFIELDSIZE, LONG, 60),
00578
00579
00580 CINIT(HTTPPROXYTUNNEL, LONG, 61),
00581
00582
00583 CINIT(INTERFACE, OBJECTPOINT, 62),
00584
00585
00586 CINIT(KRBLEVEL, OBJECTPOINT, 63),
00587
00588 #define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
00589
00590
00591 CINIT(SSL_VERIFYPEER, LONG, 64),
00592
00593
00594 CINIT(CAINFO, OBJECTPOINT, 65),
00595
00596
00597
00598
00599
00600 CINIT(MAXREDIRS, LONG, 68),
00601
00602
00603 CINIT(FILETIME, LONG, 69),
00604
00605
00606 CINIT(TELNETOPTIONS, OBJECTPOINT, 70),
00607
00608
00609 CINIT(MAXCONNECTS, LONG, 71),
00610
00611
00612 CINIT(CLOSEPOLICY, LONG, 72),
00613
00614
00615
00616
00617 CINIT(FRESH_CONNECT, LONG, 74),
00618
00619
00620 CINIT(FORBID_REUSE, LONG, 75),
00621
00622
00623 CINIT(RANDOM_FILE, OBJECTPOINT, 76),
00624
00625
00626 CINIT(EGDSOCKET, OBJECTPOINT, 77),
00627
00628
00629 CINIT(CONNECTTIMEOUT, LONG, 78),
00630
00631
00632 CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79),
00633
00634
00635 CINIT(HTTPGET, LONG, 80),
00636
00637
00638 CINIT(SSL_VERIFYHOST, LONG, 81),
00639
00640
00641 CINIT(COOKIEJAR, OBJECTPOINT, 82),
00642
00643
00644 CINIT(SSL_CIPHER_LIST, OBJECTPOINT, 83),
00645
00646
00647 CINIT(HTTP_VERSION, LONG, 84),
00648
00649
00650 CINIT(FTP_USE_EPSV, LONG, 85),
00651
00652
00653 CINIT(SSLCERTTYPE, OBJECTPOINT, 86),
00654
00655
00656 CINIT(SSLKEY, OBJECTPOINT, 87),
00657
00658
00659 CINIT(SSLKEYTYPE, OBJECTPOINT, 88),
00660
00661
00662 CINIT(SSLENGINE, OBJECTPOINT, 89),
00663
00664
00665 CINIT(SSLENGINE_DEFAULT, LONG, 90),
00666
00667
00668 CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91),
00669
00670
00671 CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
00672
00673
00674 CINIT(PREQUOTE, OBJECTPOINT, 93),
00675
00676
00677 CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94),
00678
00679
00680 CINIT(DEBUGDATA, OBJECTPOINT, 95),
00681
00682
00683 CINIT(COOKIESESSION, LONG, 96),
00684
00685
00686 CINIT(CAPATH, OBJECTPOINT, 97),
00687
00688
00689 CINIT(BUFFERSIZE, LONG, 98),
00690
00691
00692 CINIT(NOSIGNAL, LONG, 99),
00693
00694
00695 CINIT(SHARE, OBJECTPOINT, 100),
00696
00697
00698 CINIT(PROXYTYPE, LONG, 101),
00699
00700
00701 CINIT(ENCODING, OBJECTPOINT, 102),
00702
00703
00704 CINIT(PRIVATE, OBJECTPOINT, 103),
00705
00706
00707 CINIT(HTTP200ALIASES, OBJECTPOINT, 104),
00708
00709
00710 CINIT(UNRESTRICTED_AUTH, LONG, 105),
00711
00712
00713 CINIT(FTP_USE_EPRT, LONG, 106),
00714
00715
00716 CINIT(HTTPAUTH, LONG, 107),
00717
00718
00719 CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108),
00720
00721
00722 CINIT(SSL_CTX_DATA, OBJECTPOINT, 109),
00723
00724
00725 CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110),
00726
00727
00728 CINIT(PROXYAUTH, LONG, 111),
00729
00730
00731 CINIT(FTP_RESPONSE_TIMEOUT, LONG , 112),
00732
00733
00734 CINIT(IPRESOLVE, LONG, 113),
00735
00736
00737 CINIT(MAXFILESIZE, LONG, 114),
00738
00739
00740 CINIT(INFILESIZE_LARGE, OFF_T, 115),
00741
00742
00743 CINIT(RESUME_FROM_LARGE, OFF_T, 116),
00744
00745
00746 CINIT(MAXFILESIZE_LARGE, OFF_T, 117),
00747
00748
00749 CINIT(NETRC_FILE, OBJECTPOINT, 118),
00750
00751
00752 CINIT(FTP_SSL, LONG, 119),
00753
00754
00755 CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120),
00756
00757
00758 CINIT(TCP_NODELAY, LONG, 121),
00759
00760
00761
00762
00763
00764
00765
00766
00767
00768
00769 CINIT(FTPSSLAUTH, LONG, 129),
00770
00771 CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130),
00772 CINIT(IOCTLDATA, OBJECTPOINT, 131),
00773
00774
00775
00776
00777
00778 CINIT(FTP_ACCOUNT, OBJECTPOINT, 134),
00779
00780
00781 CINIT(COOKIELIST, OBJECTPOINT, 135),
00782
00783
00784 CINIT(IGNORE_CONTENT_LENGTH, LONG, 136),
00785
00786
00787 CINIT(FTP_SKIP_PASV_IP, LONG, 137),
00788
00789
00790 CINIT(FTP_FILEMETHOD, LONG, 138),
00791
00792
00793 CINIT(LOCALPORT, LONG, 139),
00794
00795
00796 CINIT(LOCALPORTRANGE, LONG, 140),
00797
00798
00799 CINIT(CONNECT_ONLY, LONG, 141),
00800
00801
00802 CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142),
00803
00804
00805 CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143),
00806
00807
00808 CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144),
00809
00810
00811
00812 CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145),
00813 CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146),
00814
00815
00816 CINIT(FTP_ALTERNATIVE_TO_USER, OBJECTPOINT, 147),
00817
00818
00819 CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148),
00820 CINIT(SOCKOPTDATA, OBJECTPOINT, 149),
00821
00822
00823 CINIT(SSL_SESSIONID_CACHE, LONG, 150),
00824
00825
00826 CINIT(SSH_AUTH_TYPES, LONG, 151),
00827
00828
00829 CINIT(SSH_PUBLIC_KEYFILE, OBJECTPOINT, 152),
00830 CINIT(SSH_PRIVATE_KEYFILE, OBJECTPOINT, 153),
00831
00832
00833 CINIT(FTP_SSL_CCC, LONG, 154),
00834
00835
00836 CINIT(TIMEOUT_MS, LONG, 155),
00837 CINIT(CONNECTTIMEOUT_MS, LONG, 156),
00838
00839
00840 CINIT(HTTP_TRANSFER_DECODING, LONG, 157),
00841 CINIT(HTTP_CONTENT_DECODING, LONG, 158),
00842
00843
00844 CINIT(NEW_FILE_PERMS, LONG, 159),
00845 CINIT(NEW_DIRECTORY_PERMS, LONG, 160),
00846
00847 CURLOPT_LASTENTRY
00848 } CURLoption;
00849
00850
00851 #define CURL_IPRESOLVE_WHATEVER 0
00852 #define CURL_IPRESOLVE_V4 1
00853 #define CURL_IPRESOLVE_V6 2
00854
00855
00856 #define CURLOPT_WRITEDATA CURLOPT_FILE
00857 #define CURLOPT_READDATA CURLOPT_INFILE
00858 #define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER
00859
00860 #ifndef CURL_NO_OLDIES
00861 #else
00862
00863 #undef CURLOPT_DNS_USE_GLOBAL_CACHE
00864 #endif
00865
00866
00867 enum {
00868 CURL_HTTP_VERSION_NONE,
00869 CURL_HTTP_VERSION_1_0,
00870 CURL_HTTP_VERSION_1_1,
00871
00872 CURL_HTTP_VERSION_LAST
00873 };
00874
00875
00876 enum CURL_NETRC_OPTION {
00877 CURL_NETRC_IGNORED,
00878 CURL_NETRC_OPTIONAL,
00879 CURL_NETRC_REQUIRED,
00880 CURL_NETRC_LAST
00881 };
00882
00883 enum {
00884 CURL_SSLVERSION_DEFAULT,
00885 CURL_SSLVERSION_TLSv1,
00886 CURL_SSLVERSION_SSLv2,
00887 CURL_SSLVERSION_SSLv3,
00888
00889 CURL_SSLVERSION_LAST
00890 };
00891
00892 typedef enum {
00893 CURL_TIMECOND_NONE,
00894
00895 CURL_TIMECOND_IFMODSINCE,
00896 CURL_TIMECOND_IFUNMODSINCE,
00897 CURL_TIMECOND_LASTMOD,
00898
00899 CURL_TIMECOND_LAST
00900 } curl_TimeCond;
00901
00902 #ifdef __BEOS__
00903 #include <support/SupportDefs.h>
00904 #endif
00905
00906 CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);
00907 CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n);
00908
00909 #ifdef CFINIT
00910 #undef CFINIT
00911 #endif
00912
00913 #ifdef CURL_ISOCPP
00914 #define CFINIT(name) CURLFORM_ ## name
00915 #else
00916
00917 #define CFINIT(name) CURLFORM_name
00918 #endif
00919
00920 typedef enum {
00921 CFINIT(NOTHING),
00922
00923
00924 CFINIT(COPYNAME),
00925 CFINIT(PTRNAME),
00926 CFINIT(NAMELENGTH),
00927 CFINIT(COPYCONTENTS),
00928 CFINIT(PTRCONTENTS),
00929 CFINIT(CONTENTSLENGTH),
00930 CFINIT(FILECONTENT),
00931 CFINIT(ARRAY),
00932 CFINIT(OBSOLETE),
00933 CFINIT(FILE),
00934
00935 CFINIT(BUFFER),
00936 CFINIT(BUFFERPTR),
00937 CFINIT(BUFFERLENGTH),
00938
00939 CFINIT(CONTENTTYPE),
00940 CFINIT(CONTENTHEADER),
00941 CFINIT(FILENAME),
00942 CFINIT(END),
00943 CFINIT(OBSOLETE2),
00944
00945 CURLFORM_LASTENTRY
00946 } CURLformoption;
00947
00948 #undef CFINIT
00949
00950 struct curl_forms {
00951 CURLformoption option;
00952 const char *value;
00953 };
00954
00955 typedef enum {
00956 CURL_FORMADD_OK,
00957
00958 CURL_FORMADD_MEMORY,
00959 CURL_FORMADD_OPTION_TWICE,
00960 CURL_FORMADD_NULL,
00961 CURL_FORMADD_UNKNOWN_OPTION,
00962 CURL_FORMADD_INCOMPLETE,
00963 CURL_FORMADD_ILLEGAL_ARRAY,
00964 CURL_FORMADD_DISABLED,
00965
00966 CURL_FORMADD_LAST
00967 } CURLFORMcode;
00968
00969 CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
00970 struct curl_httppost **last_post,
00971 ...);
00972
00973 typedef size_t (*curl_formget_callback)(void *arg, const char *buf, size_t len);
00974
00975 CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
00976 curl_formget_callback append);
00977
00978 CURL_EXTERN void curl_formfree(struct curl_httppost *form);
00979
00980 CURL_EXTERN char *curl_getenv(const char *variable);
00981
00982 CURL_EXTERN char *curl_version(void);
00983
00984 CURL_EXTERN char *curl_easy_escape(CURL *handle,
00985 const char *string,
00986 int length);
00987
00988 CURL_EXTERN char *curl_escape(const char *string,
00989 int length);
00990
00991 CURL_EXTERN char *curl_easy_unescape(CURL *handle,
00992 const char *string,
00993 int length,
00994 int *outlength);
00995
00996 CURL_EXTERN char *curl_unescape(const char *string,
00997 int length);
00998
00999 CURL_EXTERN void curl_free(void *p);
01000
01001 CURL_EXTERN CURLcode curl_global_init(long flags);
01002
01003 CURL_EXTERN CURLcode curl_global_init_mem(long flags,
01004 curl_malloc_callback m,
01005 curl_free_callback f,
01006 curl_realloc_callback r,
01007 curl_strdup_callback s,
01008 curl_calloc_callback c);
01009
01010 CURL_EXTERN void curl_global_cleanup(void);
01011
01012 struct curl_slist {
01013 char *data;
01014 struct curl_slist *next;
01015 };
01016
01017 CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
01018 const char *);
01019
01020 CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
01021
01022 CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
01023
01024 #define CURLINFO_STRING 0x100000
01025 #define CURLINFO_LONG 0x200000
01026 #define CURLINFO_DOUBLE 0x300000
01027 #define CURLINFO_SLIST 0x400000
01028 #define CURLINFO_MASK 0x0fffff
01029 #define CURLINFO_TYPEMASK 0xf00000
01030
01031 typedef enum {
01032 CURLINFO_NONE,
01033 CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1,
01034 CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2,
01035 CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3,
01036 CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4,
01037 CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5,
01038 CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,
01039 CURLINFO_SIZE_UPLOAD = CURLINFO_DOUBLE + 7,
01040 CURLINFO_SIZE_DOWNLOAD = CURLINFO_DOUBLE + 8,
01041 CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9,
01042 CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 10,
01043 CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11,
01044 CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12,
01045 CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13,
01046 CURLINFO_FILETIME = CURLINFO_LONG + 14,
01047 CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15,
01048 CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16,
01049 CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
01050 CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18,
01051 CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19,
01052 CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20,
01053 CURLINFO_PRIVATE = CURLINFO_STRING + 21,
01054 CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22,
01055 CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23,
01056 CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24,
01057 CURLINFO_OS_ERRNO = CURLINFO_LONG + 25,
01058 CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26,
01059 CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27,
01060 CURLINFO_COOKIELIST = CURLINFO_SLIST + 28,
01061 CURLINFO_LASTSOCKET = CURLINFO_LONG + 29,
01062 CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,
01063
01064
01065 CURLINFO_LASTONE = 30
01066 } CURLINFO;
01067
01068 #define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE
01069
01070 typedef enum {
01071 CURLCLOSEPOLICY_NONE,
01072
01073 CURLCLOSEPOLICY_OLDEST,
01074 CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
01075 CURLCLOSEPOLICY_LEAST_TRAFFIC,
01076 CURLCLOSEPOLICY_SLOWEST,
01077 CURLCLOSEPOLICY_CALLBACK,
01078
01079 CURLCLOSEPOLICY_LAST
01080 } curl_closepolicy;
01081
01082 #define CURL_GLOBAL_SSL (1<<0)
01083 #define CURL_GLOBAL_WIN32 (1<<1)
01084 #define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
01085 #define CURL_GLOBAL_NOTHING 0
01086 #define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
01087
01088 typedef enum {
01089 CURL_LOCK_DATA_NONE = 0,
01090
01091 CURL_LOCK_DATA_SHARE,
01092 CURL_LOCK_DATA_COOKIE,
01093 CURL_LOCK_DATA_DNS,
01094 CURL_LOCK_DATA_SSL_SESSION,
01095 CURL_LOCK_DATA_CONNECT,
01096 CURL_LOCK_DATA_LAST
01097 } curl_lock_data;
01098
01099 typedef enum {
01100 CURL_LOCK_ACCESS_NONE = 0,
01101 CURL_LOCK_ACCESS_SHARED = 1,
01102 CURL_LOCK_ACCESS_SINGLE = 2,
01103 CURL_LOCK_ACCESS_LAST
01104 } curl_lock_access;
01105
01106 typedef void (*curl_lock_function)(CURL *handle,
01107 curl_lock_data data,
01108 curl_lock_access locktype,
01109 void *userptr);
01110 typedef void (*curl_unlock_function)(CURL *handle,
01111 curl_lock_data data,
01112 void *userptr);
01113
01114 typedef void CURLSH;
01115
01116 typedef enum {
01117 CURLSHE_OK,
01118 CURLSHE_BAD_OPTION,
01119 CURLSHE_IN_USE,
01120 CURLSHE_INVALID,
01121 CURLSHE_NOMEM,
01122 CURLSHE_LAST
01123 } CURLSHcode;
01124
01125 typedef enum {
01126 CURLSHOPT_NONE,
01127 CURLSHOPT_SHARE,
01128 CURLSHOPT_UNSHARE,
01129 CURLSHOPT_LOCKFUNC,
01130 CURLSHOPT_UNLOCKFUNC,
01131 CURLSHOPT_USERDATA,
01132 CURLSHOPT_LAST
01133 } CURLSHoption;
01134
01135 CURL_EXTERN CURLSH *curl_share_init(void);
01136 CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
01137 CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
01138
01139 typedef enum {
01140 CURLVERSION_FIRST,
01141 CURLVERSION_SECOND,
01142 CURLVERSION_THIRD,
01143 CURLVERSION_FOURTH,
01144 CURLVERSION_LAST
01145 } CURLversion;
01146
01147 #define CURLVERSION_NOW CURLVERSION_FOURTH
01148
01149 typedef struct {
01150 CURLversion age;
01151 const char *version;
01152 unsigned int version_num;
01153 const char *host;
01154 int features;
01155 const char *ssl_version;
01156 long ssl_version_num;
01157 const char *libz_version;
01158
01159 const char * const *protocols;
01160
01161
01162 const char *ares;
01163 int ares_num;
01164
01165
01166 const char *libidn;
01167
01168
01169
01170
01171 int iconv_ver_num;
01172
01173 const char *libssh_version;
01174
01175 } curl_version_info_data;
01176
01177 #define CURL_VERSION_IPV6 (1<<0)
01178 #define CURL_VERSION_KERBEROS4 (1<<1)
01179 #define CURL_VERSION_SSL (1<<2)
01180 #define CURL_VERSION_LIBZ (1<<3)
01181 #define CURL_VERSION_NTLM (1<<4)
01182 #define CURL_VERSION_GSSNEGOTIATE (1<<5)
01183 #define CURL_VERSION_DEBUG (1<<6)
01184 #define CURL_VERSION_ASYNCHDNS (1<<7)
01185 #define CURL_VERSION_SPNEGO (1<<8)
01186 #define CURL_VERSION_LARGEFILE (1<<9)
01187 #define CURL_VERSION_IDN (1<<10)
01188 #define CURL_VERSION_SSPI (1<<11)
01189 #define CURL_VERSION_CONV (1<<12)
01190
01191 CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
01192
01193 CURL_EXTERN const char *curl_easy_strerror(CURLcode);
01194
01195 CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
01196
01197 #ifdef __cplusplus
01198 }
01199 #endif
01200
01201 #include "easy.h"
01202 #include "multi.h"
01203
01204 #endif