1*9712c20fSFrederick Mayle #ifndef __CURL_CURL_H 2*9712c20fSFrederick Mayle #define __CURL_CURL_H 3*9712c20fSFrederick Mayle /*************************************************************************** 4*9712c20fSFrederick Mayle * _ _ ____ _ 5*9712c20fSFrederick Mayle * Project ___| | | | _ \| | 6*9712c20fSFrederick Mayle * / __| | | | |_) | | 7*9712c20fSFrederick Mayle * | (__| |_| | _ <| |___ 8*9712c20fSFrederick Mayle * \___|\___/|_| \_\_____| 9*9712c20fSFrederick Mayle * 10*9712c20fSFrederick Mayle * Copyright (C) 1998 - 2009, Daniel Stenberg, <[email protected]>, et al. 11*9712c20fSFrederick Mayle * 12*9712c20fSFrederick Mayle * This software is licensed as described in the file COPYING, which 13*9712c20fSFrederick Mayle * you should have received as part of this distribution. The terms 14*9712c20fSFrederick Mayle * are also available at http://curl.haxx.se/docs/copyright.html. 15*9712c20fSFrederick Mayle * 16*9712c20fSFrederick Mayle * You may opt to use, copy, modify, merge, publish, distribute and/or sell 17*9712c20fSFrederick Mayle * copies of the Software, and permit persons to whom the Software is 18*9712c20fSFrederick Mayle * furnished to do so, under the terms of the COPYING file. 19*9712c20fSFrederick Mayle * 20*9712c20fSFrederick Mayle * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 21*9712c20fSFrederick Mayle * KIND, either express or implied. 22*9712c20fSFrederick Mayle * 23*9712c20fSFrederick Mayle * $Id: curl.h,v 1.396 2009-10-16 13:30:31 yangtse Exp $ 24*9712c20fSFrederick Mayle ***************************************************************************/ 25*9712c20fSFrederick Mayle 26*9712c20fSFrederick Mayle /* 27*9712c20fSFrederick Mayle * If you have libcurl problems, all docs and details are found here: 28*9712c20fSFrederick Mayle * http://curl.haxx.se/libcurl/ 29*9712c20fSFrederick Mayle * 30*9712c20fSFrederick Mayle * curl-library mailing list subscription and unsubscription web interface: 31*9712c20fSFrederick Mayle * http://cool.haxx.se/mailman/listinfo/curl-library/ 32*9712c20fSFrederick Mayle */ 33*9712c20fSFrederick Mayle 34*9712c20fSFrederick Mayle /* 35*9712c20fSFrederick Mayle * Leading 'curl' path on the 'curlbuild.h' include statement is 36*9712c20fSFrederick Mayle * required to properly allow building outside of the source tree, 37*9712c20fSFrederick Mayle * due to the fact that in this case 'curlbuild.h' is generated in 38*9712c20fSFrederick Mayle * a subdirectory of the build tree while 'curl.h actually remains 39*9712c20fSFrederick Mayle * in a subdirectory of the source tree. 40*9712c20fSFrederick Mayle */ 41*9712c20fSFrederick Mayle 42*9712c20fSFrederick Mayle #include "third_party/curl/curlver.h" /* libcurl version defines */ 43*9712c20fSFrederick Mayle #include "third_party/curl/curlbuild.h" /* libcurl build definitions */ 44*9712c20fSFrederick Mayle #include "third_party/curl/curlrules.h" /* libcurl rules enforcement */ 45*9712c20fSFrederick Mayle 46*9712c20fSFrederick Mayle /* 47*9712c20fSFrederick Mayle * Define WIN32 when build target is Win32 API 48*9712c20fSFrederick Mayle */ 49*9712c20fSFrederick Mayle 50*9712c20fSFrederick Mayle #if (defined(_WIN32) || defined(__WIN32__)) && \ 51*9712c20fSFrederick Mayle !defined(WIN32) && !defined(__SYMBIAN32__) 52*9712c20fSFrederick Mayle #define WIN32 53*9712c20fSFrederick Mayle #endif 54*9712c20fSFrederick Mayle 55*9712c20fSFrederick Mayle #include <stdio.h> 56*9712c20fSFrederick Mayle #include <limits.h> 57*9712c20fSFrederick Mayle 58*9712c20fSFrederick Mayle /* The include stuff here below is mainly for time_t! */ 59*9712c20fSFrederick Mayle #include <sys/types.h> 60*9712c20fSFrederick Mayle #include <time.h> 61*9712c20fSFrederick Mayle 62*9712c20fSFrederick Mayle #if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__GNUC__) && \ 63*9712c20fSFrederick Mayle !defined(__CYGWIN__) || defined(__MINGW32__) 64*9712c20fSFrederick Mayle #if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H)) 65*9712c20fSFrederick Mayle /* The check above prevents the winsock2 inclusion if winsock.h already was 66*9712c20fSFrederick Mayle included, since they can't co-exist without problems */ 67*9712c20fSFrederick Mayle #include <winsock2.h> 68*9712c20fSFrederick Mayle #include <ws2tcpip.h> 69*9712c20fSFrederick Mayle #endif 70*9712c20fSFrederick Mayle #else 71*9712c20fSFrederick Mayle 72*9712c20fSFrederick Mayle /* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish 73*9712c20fSFrederick Mayle libc5-based Linux systems. Only include it on system that are known to 74*9712c20fSFrederick Mayle require it! */ 75*9712c20fSFrederick Mayle #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ 76*9712c20fSFrederick Mayle defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ 77*9712c20fSFrederick Mayle defined(__ANDROID__) 78*9712c20fSFrederick Mayle #include <sys/select.h> 79*9712c20fSFrederick Mayle #endif 80*9712c20fSFrederick Mayle 81*9712c20fSFrederick Mayle #ifndef _WIN32_WCE 82*9712c20fSFrederick Mayle #include <sys/socket.h> 83*9712c20fSFrederick Mayle #endif 84*9712c20fSFrederick Mayle #if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__) 85*9712c20fSFrederick Mayle #include <sys/time.h> 86*9712c20fSFrederick Mayle #endif 87*9712c20fSFrederick Mayle #include <sys/types.h> 88*9712c20fSFrederick Mayle #endif 89*9712c20fSFrederick Mayle 90*9712c20fSFrederick Mayle #ifdef __BEOS__ 91*9712c20fSFrederick Mayle #include <support/SupportDefs.h> 92*9712c20fSFrederick Mayle #endif 93*9712c20fSFrederick Mayle 94*9712c20fSFrederick Mayle #ifdef __cplusplus 95*9712c20fSFrederick Mayle extern "C" { 96*9712c20fSFrederick Mayle #endif 97*9712c20fSFrederick Mayle 98*9712c20fSFrederick Mayle typedef void CURL; 99*9712c20fSFrederick Mayle 100*9712c20fSFrederick Mayle /* 101*9712c20fSFrederick Mayle * Decorate exportable functions for Win32 and Symbian OS DLL linking. 102*9712c20fSFrederick Mayle * This avoids using a .def file for building libcurl.dll. 103*9712c20fSFrederick Mayle */ 104*9712c20fSFrederick Mayle #if (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)) && \ 105*9712c20fSFrederick Mayle !defined(CURL_STATICLIB) 106*9712c20fSFrederick Mayle #if defined(BUILDING_LIBCURL) 107*9712c20fSFrederick Mayle #define CURL_EXTERN __declspec(dllexport) 108*9712c20fSFrederick Mayle #else 109*9712c20fSFrederick Mayle #define CURL_EXTERN __declspec(dllimport) 110*9712c20fSFrederick Mayle #endif 111*9712c20fSFrederick Mayle #else 112*9712c20fSFrederick Mayle 113*9712c20fSFrederick Mayle #ifdef CURL_HIDDEN_SYMBOLS 114*9712c20fSFrederick Mayle /* 115*9712c20fSFrederick Mayle * This definition is used to make external definitions visible in the 116*9712c20fSFrederick Mayle * shared library when symbols are hidden by default. It makes no 117*9712c20fSFrederick Mayle * difference when compiling applications whether this is set or not, 118*9712c20fSFrederick Mayle * only when compiling the library. 119*9712c20fSFrederick Mayle */ 120*9712c20fSFrederick Mayle #define CURL_EXTERN CURL_EXTERN_SYMBOL 121*9712c20fSFrederick Mayle #else 122*9712c20fSFrederick Mayle #define CURL_EXTERN 123*9712c20fSFrederick Mayle #endif 124*9712c20fSFrederick Mayle #endif 125*9712c20fSFrederick Mayle 126*9712c20fSFrederick Mayle #ifndef curl_socket_typedef 127*9712c20fSFrederick Mayle /* socket typedef */ 128*9712c20fSFrederick Mayle #ifdef WIN32 129*9712c20fSFrederick Mayle typedef SOCKET curl_socket_t; 130*9712c20fSFrederick Mayle #define CURL_SOCKET_BAD INVALID_SOCKET 131*9712c20fSFrederick Mayle #else 132*9712c20fSFrederick Mayle typedef int curl_socket_t; 133*9712c20fSFrederick Mayle #define CURL_SOCKET_BAD -1 134*9712c20fSFrederick Mayle #endif 135*9712c20fSFrederick Mayle #define curl_socket_typedef 136*9712c20fSFrederick Mayle #endif /* curl_socket_typedef */ 137*9712c20fSFrederick Mayle 138*9712c20fSFrederick Mayle struct curl_httppost { 139*9712c20fSFrederick Mayle struct curl_httppost *next; /* next entry in the list */ 140*9712c20fSFrederick Mayle char *name; /* pointer to allocated name */ 141*9712c20fSFrederick Mayle long namelength; /* length of name length */ 142*9712c20fSFrederick Mayle char *contents; /* pointer to allocated data contents */ 143*9712c20fSFrederick Mayle long contentslength; /* length of contents field */ 144*9712c20fSFrederick Mayle char *buffer; /* pointer to allocated buffer contents */ 145*9712c20fSFrederick Mayle long bufferlength; /* length of buffer field */ 146*9712c20fSFrederick Mayle char *contenttype; /* Content-Type */ 147*9712c20fSFrederick Mayle struct curl_slist* contentheader; /* list of extra headers for this form */ 148*9712c20fSFrederick Mayle struct curl_httppost *more; /* if one field name has more than one 149*9712c20fSFrederick Mayle file, this link should link to following 150*9712c20fSFrederick Mayle files */ 151*9712c20fSFrederick Mayle long flags; /* as defined below */ 152*9712c20fSFrederick Mayle #define HTTPPOST_FILENAME (1<<0) /* specified content is a file name */ 153*9712c20fSFrederick Mayle #define HTTPPOST_READFILE (1<<1) /* specified content is a file name */ 154*9712c20fSFrederick Mayle #define HTTPPOST_PTRNAME (1<<2) /* name is only stored pointer 155*9712c20fSFrederick Mayle do not free in formfree */ 156*9712c20fSFrederick Mayle #define HTTPPOST_PTRCONTENTS (1<<3) /* contents is only stored pointer 157*9712c20fSFrederick Mayle do not free in formfree */ 158*9712c20fSFrederick Mayle #define HTTPPOST_BUFFER (1<<4) /* upload file from buffer */ 159*9712c20fSFrederick Mayle #define HTTPPOST_PTRBUFFER (1<<5) /* upload file from pointer contents */ 160*9712c20fSFrederick Mayle #define HTTPPOST_CALLBACK (1<<6) /* upload file contents by using the 161*9712c20fSFrederick Mayle regular read callback to get the data 162*9712c20fSFrederick Mayle and pass the given pointer as custom 163*9712c20fSFrederick Mayle pointer */ 164*9712c20fSFrederick Mayle 165*9712c20fSFrederick Mayle char *showfilename; /* The file name to show. If not set, the 166*9712c20fSFrederick Mayle actual file name will be used (if this 167*9712c20fSFrederick Mayle is a file part) */ 168*9712c20fSFrederick Mayle void *userp; /* custom pointer used for 169*9712c20fSFrederick Mayle HTTPPOST_CALLBACK posts */ 170*9712c20fSFrederick Mayle }; 171*9712c20fSFrederick Mayle 172*9712c20fSFrederick Mayle typedef int (*curl_progress_callback)(void *clientp, 173*9712c20fSFrederick Mayle double dltotal, 174*9712c20fSFrederick Mayle double dlnow, 175*9712c20fSFrederick Mayle double ultotal, 176*9712c20fSFrederick Mayle double ulnow); 177*9712c20fSFrederick Mayle 178*9712c20fSFrederick Mayle #ifndef CURL_MAX_WRITE_SIZE 179*9712c20fSFrederick Mayle /* Tests have proven that 20K is a very bad buffer size for uploads on 180*9712c20fSFrederick Mayle Windows, while 16K for some odd reason performed a lot better. 181*9712c20fSFrederick Mayle We do the ifndef check to allow this value to easier be changed at build 182*9712c20fSFrederick Mayle time for those who feel adventurous. */ 183*9712c20fSFrederick Mayle #define CURL_MAX_WRITE_SIZE 16384 184*9712c20fSFrederick Mayle #endif 185*9712c20fSFrederick Mayle 186*9712c20fSFrederick Mayle #ifndef CURL_MAX_HTTP_HEADER 187*9712c20fSFrederick Mayle /* The only reason to have a max limit for this is to avoid the risk of a bad 188*9712c20fSFrederick Mayle server feeding libcurl with a never-ending header that will cause reallocs 189*9712c20fSFrederick Mayle infinitely */ 190*9712c20fSFrederick Mayle #define CURL_MAX_HTTP_HEADER (100*1024) 191*9712c20fSFrederick Mayle #endif 192*9712c20fSFrederick Mayle 193*9712c20fSFrederick Mayle 194*9712c20fSFrederick Mayle /* This is a magic return code for the write callback that, when returned, 195*9712c20fSFrederick Mayle will signal libcurl to pause receiving on the current transfer. */ 196*9712c20fSFrederick Mayle #define CURL_WRITEFUNC_PAUSE 0x10000001 197*9712c20fSFrederick Mayle typedef size_t (*curl_write_callback)(char *buffer, 198*9712c20fSFrederick Mayle size_t size, 199*9712c20fSFrederick Mayle size_t nitems, 200*9712c20fSFrederick Mayle void *outstream); 201*9712c20fSFrederick Mayle 202*9712c20fSFrederick Mayle /* These are the return codes for the seek callbacks */ 203*9712c20fSFrederick Mayle #define CURL_SEEKFUNC_OK 0 204*9712c20fSFrederick Mayle #define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */ 205*9712c20fSFrederick Mayle #define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so 206*9712c20fSFrederick Mayle libcurl might try other means instead */ 207*9712c20fSFrederick Mayle typedef int (*curl_seek_callback)(void *instream, 208*9712c20fSFrederick Mayle curl_off_t offset, 209*9712c20fSFrederick Mayle int origin); /* 'whence' */ 210*9712c20fSFrederick Mayle 211*9712c20fSFrederick Mayle /* This is a return code for the read callback that, when returned, will 212*9712c20fSFrederick Mayle signal libcurl to immediately abort the current transfer. */ 213*9712c20fSFrederick Mayle #define CURL_READFUNC_ABORT 0x10000000 214*9712c20fSFrederick Mayle /* This is a return code for the read callback that, when returned, will 215*9712c20fSFrederick Mayle signal libcurl to pause sending data on the current transfer. */ 216*9712c20fSFrederick Mayle #define CURL_READFUNC_PAUSE 0x10000001 217*9712c20fSFrederick Mayle 218*9712c20fSFrederick Mayle typedef size_t (*curl_read_callback)(char *buffer, 219*9712c20fSFrederick Mayle size_t size, 220*9712c20fSFrederick Mayle size_t nitems, 221*9712c20fSFrederick Mayle void *instream); 222*9712c20fSFrederick Mayle 223*9712c20fSFrederick Mayle typedef enum { 224*9712c20fSFrederick Mayle CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */ 225*9712c20fSFrederick Mayle CURLSOCKTYPE_LAST /* never use */ 226*9712c20fSFrederick Mayle } curlsocktype; 227*9712c20fSFrederick Mayle 228*9712c20fSFrederick Mayle typedef int (*curl_sockopt_callback)(void *clientp, 229*9712c20fSFrederick Mayle curl_socket_t curlfd, 230*9712c20fSFrederick Mayle curlsocktype purpose); 231*9712c20fSFrederick Mayle 232*9712c20fSFrederick Mayle struct curl_sockaddr { 233*9712c20fSFrederick Mayle int family; 234*9712c20fSFrederick Mayle int socktype; 235*9712c20fSFrederick Mayle int protocol; 236*9712c20fSFrederick Mayle unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it 237*9712c20fSFrederick Mayle turned really ugly and painful on the systems that 238*9712c20fSFrederick Mayle lack this type */ 239*9712c20fSFrederick Mayle struct sockaddr addr; 240*9712c20fSFrederick Mayle }; 241*9712c20fSFrederick Mayle 242*9712c20fSFrederick Mayle typedef curl_socket_t 243*9712c20fSFrederick Mayle (*curl_opensocket_callback)(void *clientp, 244*9712c20fSFrederick Mayle curlsocktype purpose, 245*9712c20fSFrederick Mayle struct curl_sockaddr *address); 246*9712c20fSFrederick Mayle 247*9712c20fSFrederick Mayle #ifndef CURL_NO_OLDIES 248*9712c20fSFrederick Mayle /* not used since 7.10.8, will be removed in a future release */ 249*9712c20fSFrederick Mayle typedef int (*curl_passwd_callback)(void *clientp, 250*9712c20fSFrederick Mayle const char *prompt, 251*9712c20fSFrederick Mayle char *buffer, 252*9712c20fSFrederick Mayle int buflen); 253*9712c20fSFrederick Mayle #endif 254*9712c20fSFrederick Mayle 255*9712c20fSFrederick Mayle typedef enum { 256*9712c20fSFrederick Mayle CURLIOE_OK, /* I/O operation successful */ 257*9712c20fSFrederick Mayle CURLIOE_UNKNOWNCMD, /* command was unknown to callback */ 258*9712c20fSFrederick Mayle CURLIOE_FAILRESTART, /* failed to restart the read */ 259*9712c20fSFrederick Mayle CURLIOE_LAST /* never use */ 260*9712c20fSFrederick Mayle } curlioerr; 261*9712c20fSFrederick Mayle 262*9712c20fSFrederick Mayle typedef enum { 263*9712c20fSFrederick Mayle CURLIOCMD_NOP, /* no operation */ 264*9712c20fSFrederick Mayle CURLIOCMD_RESTARTREAD, /* restart the read stream from start */ 265*9712c20fSFrederick Mayle CURLIOCMD_LAST /* never use */ 266*9712c20fSFrederick Mayle } curliocmd; 267*9712c20fSFrederick Mayle 268*9712c20fSFrederick Mayle typedef curlioerr (*curl_ioctl_callback)(CURL *handle, 269*9712c20fSFrederick Mayle int cmd, 270*9712c20fSFrederick Mayle void *clientp); 271*9712c20fSFrederick Mayle 272*9712c20fSFrederick Mayle /* 273*9712c20fSFrederick Mayle * The following typedef's are signatures of malloc, free, realloc, strdup and 274*9712c20fSFrederick Mayle * calloc respectively. Function pointers of these types can be passed to the 275*9712c20fSFrederick Mayle * curl_global_init_mem() function to set user defined memory management 276*9712c20fSFrederick Mayle * callback routines. 277*9712c20fSFrederick Mayle */ 278*9712c20fSFrederick Mayle typedef void *(*curl_malloc_callback)(size_t size); 279*9712c20fSFrederick Mayle typedef void (*curl_free_callback)(void *ptr); 280*9712c20fSFrederick Mayle typedef void *(*curl_realloc_callback)(void *ptr, size_t size); 281*9712c20fSFrederick Mayle typedef char *(*curl_strdup_callback)(const char *str); 282*9712c20fSFrederick Mayle typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size); 283*9712c20fSFrederick Mayle 284*9712c20fSFrederick Mayle /* the kind of data that is passed to information_callback*/ 285*9712c20fSFrederick Mayle typedef enum { 286*9712c20fSFrederick Mayle CURLINFO_TEXT = 0, 287*9712c20fSFrederick Mayle CURLINFO_HEADER_IN, /* 1 */ 288*9712c20fSFrederick Mayle CURLINFO_HEADER_OUT, /* 2 */ 289*9712c20fSFrederick Mayle CURLINFO_DATA_IN, /* 3 */ 290*9712c20fSFrederick Mayle CURLINFO_DATA_OUT, /* 4 */ 291*9712c20fSFrederick Mayle CURLINFO_SSL_DATA_IN, /* 5 */ 292*9712c20fSFrederick Mayle CURLINFO_SSL_DATA_OUT, /* 6 */ 293*9712c20fSFrederick Mayle CURLINFO_END 294*9712c20fSFrederick Mayle } curl_infotype; 295*9712c20fSFrederick Mayle 296*9712c20fSFrederick Mayle typedef int (*curl_debug_callback) 297*9712c20fSFrederick Mayle (CURL *handle, /* the handle/transfer this concerns */ 298*9712c20fSFrederick Mayle curl_infotype type, /* what kind of data */ 299*9712c20fSFrederick Mayle char *data, /* points to the data */ 300*9712c20fSFrederick Mayle size_t size, /* size of the data pointed to */ 301*9712c20fSFrederick Mayle void *userptr); /* whatever the user please */ 302*9712c20fSFrederick Mayle 303*9712c20fSFrederick Mayle /* All possible error codes from all sorts of curl functions. Future versions 304*9712c20fSFrederick Mayle may return other values, stay prepared. 305*9712c20fSFrederick Mayle 306*9712c20fSFrederick Mayle Always add new return codes last. Never *EVER* remove any. The return 307*9712c20fSFrederick Mayle codes must remain the same! 308*9712c20fSFrederick Mayle */ 309*9712c20fSFrederick Mayle 310*9712c20fSFrederick Mayle typedef enum { 311*9712c20fSFrederick Mayle CURLE_OK = 0, 312*9712c20fSFrederick Mayle CURLE_UNSUPPORTED_PROTOCOL, /* 1 */ 313*9712c20fSFrederick Mayle CURLE_FAILED_INIT, /* 2 */ 314*9712c20fSFrederick Mayle CURLE_URL_MALFORMAT, /* 3 */ 315*9712c20fSFrederick Mayle CURLE_OBSOLETE4, /* 4 - NOT USED */ 316*9712c20fSFrederick Mayle CURLE_COULDNT_RESOLVE_PROXY, /* 5 */ 317*9712c20fSFrederick Mayle CURLE_COULDNT_RESOLVE_HOST, /* 6 */ 318*9712c20fSFrederick Mayle CURLE_COULDNT_CONNECT, /* 7 */ 319*9712c20fSFrederick Mayle CURLE_FTP_WEIRD_SERVER_REPLY, /* 8 */ 320*9712c20fSFrederick Mayle CURLE_REMOTE_ACCESS_DENIED, /* 9 a service was denied by the server 321*9712c20fSFrederick Mayle due to lack of access - when login fails 322*9712c20fSFrederick Mayle this is not returned. */ 323*9712c20fSFrederick Mayle CURLE_OBSOLETE10, /* 10 - NOT USED */ 324*9712c20fSFrederick Mayle CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */ 325*9712c20fSFrederick Mayle CURLE_OBSOLETE12, /* 12 - NOT USED */ 326*9712c20fSFrederick Mayle CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */ 327*9712c20fSFrederick Mayle CURLE_FTP_WEIRD_227_FORMAT, /* 14 */ 328*9712c20fSFrederick Mayle CURLE_FTP_CANT_GET_HOST, /* 15 */ 329*9712c20fSFrederick Mayle CURLE_OBSOLETE16, /* 16 - NOT USED */ 330*9712c20fSFrederick Mayle CURLE_FTP_COULDNT_SET_TYPE, /* 17 */ 331*9712c20fSFrederick Mayle CURLE_PARTIAL_FILE, /* 18 */ 332*9712c20fSFrederick Mayle CURLE_FTP_COULDNT_RETR_FILE, /* 19 */ 333*9712c20fSFrederick Mayle CURLE_OBSOLETE20, /* 20 - NOT USED */ 334*9712c20fSFrederick Mayle CURLE_QUOTE_ERROR, /* 21 - quote command failure */ 335*9712c20fSFrederick Mayle CURLE_HTTP_RETURNED_ERROR, /* 22 */ 336*9712c20fSFrederick Mayle CURLE_WRITE_ERROR, /* 23 */ 337*9712c20fSFrederick Mayle CURLE_OBSOLETE24, /* 24 - NOT USED */ 338*9712c20fSFrederick Mayle CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */ 339*9712c20fSFrederick Mayle CURLE_READ_ERROR, /* 26 - couldn't open/read from file */ 340*9712c20fSFrederick Mayle CURLE_OUT_OF_MEMORY, /* 27 */ 341*9712c20fSFrederick Mayle /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error 342*9712c20fSFrederick Mayle instead of a memory allocation error if CURL_DOES_CONVERSIONS 343*9712c20fSFrederick Mayle is defined 344*9712c20fSFrederick Mayle */ 345*9712c20fSFrederick Mayle CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */ 346*9712c20fSFrederick Mayle CURLE_OBSOLETE29, /* 29 - NOT USED */ 347*9712c20fSFrederick Mayle CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */ 348*9712c20fSFrederick Mayle CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */ 349*9712c20fSFrederick Mayle CURLE_OBSOLETE32, /* 32 - NOT USED */ 350*9712c20fSFrederick Mayle CURLE_RANGE_ERROR, /* 33 - RANGE "command" didn't work */ 351*9712c20fSFrederick Mayle CURLE_HTTP_POST_ERROR, /* 34 */ 352*9712c20fSFrederick Mayle CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */ 353*9712c20fSFrederick Mayle CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */ 354*9712c20fSFrederick Mayle CURLE_FILE_COULDNT_READ_FILE, /* 37 */ 355*9712c20fSFrederick Mayle CURLE_LDAP_CANNOT_BIND, /* 38 */ 356*9712c20fSFrederick Mayle CURLE_LDAP_SEARCH_FAILED, /* 39 */ 357*9712c20fSFrederick Mayle CURLE_OBSOLETE40, /* 40 - NOT USED */ 358*9712c20fSFrederick Mayle CURLE_FUNCTION_NOT_FOUND, /* 41 */ 359*9712c20fSFrederick Mayle CURLE_ABORTED_BY_CALLBACK, /* 42 */ 360*9712c20fSFrederick Mayle CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */ 361*9712c20fSFrederick Mayle CURLE_OBSOLETE44, /* 44 - NOT USED */ 362*9712c20fSFrederick Mayle CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */ 363*9712c20fSFrederick Mayle CURLE_OBSOLETE46, /* 46 - NOT USED */ 364*9712c20fSFrederick Mayle CURLE_TOO_MANY_REDIRECTS , /* 47 - catch endless re-direct loops */ 365*9712c20fSFrederick Mayle CURLE_UNKNOWN_TELNET_OPTION, /* 48 - User specified an unknown option */ 366*9712c20fSFrederick Mayle CURLE_TELNET_OPTION_SYNTAX , /* 49 - Malformed telnet option */ 367*9712c20fSFrederick Mayle CURLE_OBSOLETE50, /* 50 - NOT USED */ 368*9712c20fSFrederick Mayle CURLE_PEER_FAILED_VERIFICATION, /* 51 - peer's certificate or fingerprint 369*9712c20fSFrederick Mayle wasn't verified fine */ 370*9712c20fSFrederick Mayle CURLE_GOT_NOTHING, /* 52 - when this is a specific error */ 371*9712c20fSFrederick Mayle CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */ 372*9712c20fSFrederick Mayle CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as 373*9712c20fSFrederick Mayle default */ 374*9712c20fSFrederick Mayle CURLE_SEND_ERROR, /* 55 - failed sending network data */ 375*9712c20fSFrederick Mayle CURLE_RECV_ERROR, /* 56 - failure in receiving network data */ 376*9712c20fSFrederick Mayle CURLE_OBSOLETE57, /* 57 - NOT IN USE */ 377*9712c20fSFrederick Mayle CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */ 378*9712c20fSFrederick Mayle CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */ 379*9712c20fSFrederick Mayle CURLE_SSL_CACERT, /* 60 - problem with the CA cert (path?) */ 380*9712c20fSFrederick Mayle CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized transfer encoding */ 381*9712c20fSFrederick Mayle CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */ 382*9712c20fSFrederick Mayle CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */ 383*9712c20fSFrederick Mayle CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */ 384*9712c20fSFrederick Mayle CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind 385*9712c20fSFrederick Mayle that failed */ 386*9712c20fSFrederick Mayle CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */ 387*9712c20fSFrederick Mayle CURLE_LOGIN_DENIED, /* 67 - user, password or similar was not 388*9712c20fSFrederick Mayle accepted and we failed to login */ 389*9712c20fSFrederick Mayle CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */ 390*9712c20fSFrederick Mayle CURLE_TFTP_PERM, /* 69 - permission problem on server */ 391*9712c20fSFrederick Mayle CURLE_REMOTE_DISK_FULL, /* 70 - out of disk space on server */ 392*9712c20fSFrederick Mayle CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */ 393*9712c20fSFrederick Mayle CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */ 394*9712c20fSFrederick Mayle CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */ 395*9712c20fSFrederick Mayle CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */ 396*9712c20fSFrederick Mayle CURLE_CONV_FAILED, /* 75 - conversion failed */ 397*9712c20fSFrederick Mayle CURLE_CONV_REQD, /* 76 - caller must register conversion 398*9712c20fSFrederick Mayle callbacks using curl_easy_setopt options 399*9712c20fSFrederick Mayle CURLOPT_CONV_FROM_NETWORK_FUNCTION, 400*9712c20fSFrederick Mayle CURLOPT_CONV_TO_NETWORK_FUNCTION, and 401*9712c20fSFrederick Mayle CURLOPT_CONV_FROM_UTF8_FUNCTION */ 402*9712c20fSFrederick Mayle CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing 403*9712c20fSFrederick Mayle or wrong format */ 404*9712c20fSFrederick Mayle CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */ 405*9712c20fSFrederick Mayle CURLE_SSH, /* 79 - error from the SSH layer, somewhat 406*9712c20fSFrederick Mayle generic so the error message will be of 407*9712c20fSFrederick Mayle interest when this has happened */ 408*9712c20fSFrederick Mayle 409*9712c20fSFrederick Mayle CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL 410*9712c20fSFrederick Mayle connection */ 411*9712c20fSFrederick Mayle CURLE_AGAIN, /* 81 - socket is not ready for send/recv, 412*9712c20fSFrederick Mayle wait till it's ready and try again (Added 413*9712c20fSFrederick Mayle in 7.18.2) */ 414*9712c20fSFrederick Mayle CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or 415*9712c20fSFrederick Mayle wrong format (Added in 7.19.0) */ 416*9712c20fSFrederick Mayle CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in 417*9712c20fSFrederick Mayle 7.19.0) */ 418*9712c20fSFrederick Mayle CURL_LAST /* never use! */ 419*9712c20fSFrederick Mayle } CURLcode; 420*9712c20fSFrederick Mayle 421*9712c20fSFrederick Mayle #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all 422*9712c20fSFrederick Mayle the obsolete stuff removed! */ 423*9712c20fSFrederick Mayle 424*9712c20fSFrederick Mayle /* Backwards compatibility with older names */ 425*9712c20fSFrederick Mayle 426*9712c20fSFrederick Mayle /* The following were added in 7.17.1 */ 427*9712c20fSFrederick Mayle /* These are scheduled to disappear by 2009 */ 428*9712c20fSFrederick Mayle #define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION 429*9712c20fSFrederick Mayle 430*9712c20fSFrederick Mayle /* The following were added in 7.17.0 */ 431*9712c20fSFrederick Mayle /* These are scheduled to disappear by 2009 */ 432*9712c20fSFrederick Mayle #define CURLE_OBSOLETE CURLE_OBSOLETE50 /* noone should be using this! */ 433*9712c20fSFrederick Mayle #define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46 434*9712c20fSFrederick Mayle #define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44 435*9712c20fSFrederick Mayle #define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10 436*9712c20fSFrederick Mayle #define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16 437*9712c20fSFrederick Mayle #define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32 438*9712c20fSFrederick Mayle #define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29 439*9712c20fSFrederick Mayle #define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12 440*9712c20fSFrederick Mayle #define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20 441*9712c20fSFrederick Mayle #define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40 442*9712c20fSFrederick Mayle #define CURLE_MALFORMAT_USER CURLE_OBSOLETE24 443*9712c20fSFrederick Mayle #define CURLE_SHARE_IN_USE CURLE_OBSOLETE57 444*9712c20fSFrederick Mayle #define CURLE_URL_MALFORMAT_USER CURLE_OBSOLETE4 445*9712c20fSFrederick Mayle 446*9712c20fSFrederick Mayle #define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED 447*9712c20fSFrederick Mayle #define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE 448*9712c20fSFrederick Mayle #define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR 449*9712c20fSFrederick Mayle #define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL 450*9712c20fSFrederick Mayle #define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS 451*9712c20fSFrederick Mayle #define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR 452*9712c20fSFrederick Mayle #define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED 453*9712c20fSFrederick Mayle 454*9712c20fSFrederick Mayle /* The following were added earlier */ 455*9712c20fSFrederick Mayle 456*9712c20fSFrederick Mayle #define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT 457*9712c20fSFrederick Mayle 458*9712c20fSFrederick Mayle #define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR 459*9712c20fSFrederick Mayle #define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED 460*9712c20fSFrederick Mayle #define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED 461*9712c20fSFrederick Mayle 462*9712c20fSFrederick Mayle #define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE 463*9712c20fSFrederick Mayle #define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME 464*9712c20fSFrederick Mayle 465*9712c20fSFrederick Mayle /* This was the error code 50 in 7.7.3 and a few earlier versions, this 466*9712c20fSFrederick Mayle is no longer used by libcurl but is instead #defined here only to not 467*9712c20fSFrederick Mayle make programs break */ 468*9712c20fSFrederick Mayle #define CURLE_ALREADY_COMPLETE 99999 469*9712c20fSFrederick Mayle 470*9712c20fSFrederick Mayle #endif /*!CURL_NO_OLDIES*/ 471*9712c20fSFrederick Mayle 472*9712c20fSFrederick Mayle /* This prototype applies to all conversion callbacks */ 473*9712c20fSFrederick Mayle typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length); 474*9712c20fSFrederick Mayle 475*9712c20fSFrederick Mayle typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */ 476*9712c20fSFrederick Mayle void *ssl_ctx, /* actually an 477*9712c20fSFrederick Mayle OpenSSL SSL_CTX */ 478*9712c20fSFrederick Mayle void *userptr); 479*9712c20fSFrederick Mayle 480*9712c20fSFrederick Mayle typedef enum { 481*9712c20fSFrederick Mayle CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use 482*9712c20fSFrederick Mayle CONNECT HTTP/1.1 */ 483*9712c20fSFrederick Mayle CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT 484*9712c20fSFrederick Mayle HTTP/1.0 */ 485*9712c20fSFrederick Mayle CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already 486*9712c20fSFrederick Mayle in 7.10 */ 487*9712c20fSFrederick Mayle CURLPROXY_SOCKS5 = 5, /* added in 7.10 */ 488*9712c20fSFrederick Mayle CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */ 489*9712c20fSFrederick Mayle CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the 490*9712c20fSFrederick Mayle host name rather than the IP address. added 491*9712c20fSFrederick Mayle in 7.18.0 */ 492*9712c20fSFrederick Mayle } curl_proxytype; /* this enum was added in 7.10 */ 493*9712c20fSFrederick Mayle 494*9712c20fSFrederick Mayle #define CURLAUTH_NONE 0 /* nothing */ 495*9712c20fSFrederick Mayle #define CURLAUTH_BASIC (1<<0) /* Basic (default) */ 496*9712c20fSFrederick Mayle #define CURLAUTH_DIGEST (1<<1) /* Digest */ 497*9712c20fSFrederick Mayle #define CURLAUTH_GSSNEGOTIATE (1<<2) /* GSS-Negotiate */ 498*9712c20fSFrederick Mayle #define CURLAUTH_NTLM (1<<3) /* NTLM */ 499*9712c20fSFrederick Mayle #define CURLAUTH_DIGEST_IE (1<<4) /* Digest with IE flavour */ 500*9712c20fSFrederick Mayle #define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) /* all fine types set */ 501*9712c20fSFrederick Mayle #define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) 502*9712c20fSFrederick Mayle 503*9712c20fSFrederick Mayle #define CURLSSH_AUTH_ANY ~0 /* all types supported by the server */ 504*9712c20fSFrederick Mayle #define CURLSSH_AUTH_NONE 0 /* none allowed, silly but complete */ 505*9712c20fSFrederick Mayle #define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */ 506*9712c20fSFrederick Mayle #define CURLSSH_AUTH_PASSWORD (1<<1) /* password */ 507*9712c20fSFrederick Mayle #define CURLSSH_AUTH_HOST (1<<2) /* host key files */ 508*9712c20fSFrederick Mayle #define CURLSSH_AUTH_KEYBOARD (1<<3) /* keyboard interactive */ 509*9712c20fSFrederick Mayle #define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY 510*9712c20fSFrederick Mayle 511*9712c20fSFrederick Mayle #define CURL_ERROR_SIZE 256 512*9712c20fSFrederick Mayle 513*9712c20fSFrederick Mayle struct curl_khkey { 514*9712c20fSFrederick Mayle const char *key; /* points to a zero-terminated string encoded with base64 515*9712c20fSFrederick Mayle if len is zero, otherwise to the "raw" data */ 516*9712c20fSFrederick Mayle size_t len; 517*9712c20fSFrederick Mayle enum type { 518*9712c20fSFrederick Mayle CURLKHTYPE_UNKNOWN, 519*9712c20fSFrederick Mayle CURLKHTYPE_RSA1, 520*9712c20fSFrederick Mayle CURLKHTYPE_RSA, 521*9712c20fSFrederick Mayle CURLKHTYPE_DSS 522*9712c20fSFrederick Mayle } keytype; 523*9712c20fSFrederick Mayle }; 524*9712c20fSFrederick Mayle 525*9712c20fSFrederick Mayle /* this is the set of return values expected from the curl_sshkeycallback 526*9712c20fSFrederick Mayle callback */ 527*9712c20fSFrederick Mayle enum curl_khstat { 528*9712c20fSFrederick Mayle CURLKHSTAT_FINE_ADD_TO_FILE, 529*9712c20fSFrederick Mayle CURLKHSTAT_FINE, 530*9712c20fSFrederick Mayle CURLKHSTAT_REJECT, /* reject the connection, return an error */ 531*9712c20fSFrederick Mayle CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now so 532*9712c20fSFrederick Mayle this causes a CURLE_DEFER error but otherwise the 533*9712c20fSFrederick Mayle connection will be left intact etc */ 534*9712c20fSFrederick Mayle CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */ 535*9712c20fSFrederick Mayle }; 536*9712c20fSFrederick Mayle 537*9712c20fSFrederick Mayle /* this is the set of status codes pass in to the callback */ 538*9712c20fSFrederick Mayle enum curl_khmatch { 539*9712c20fSFrederick Mayle CURLKHMATCH_OK, /* match */ 540*9712c20fSFrederick Mayle CURLKHMATCH_MISMATCH, /* host found, key mismatch! */ 541*9712c20fSFrederick Mayle CURLKHMATCH_MISSING, /* no matching host/key found */ 542*9712c20fSFrederick Mayle CURLKHMATCH_LAST /* not for use, only a marker for last-in-list */ 543*9712c20fSFrederick Mayle }; 544*9712c20fSFrederick Mayle 545*9712c20fSFrederick Mayle typedef int 546*9712c20fSFrederick Mayle (*curl_sshkeycallback) (CURL *easy, /* easy handle */ 547*9712c20fSFrederick Mayle const struct curl_khkey *knownkey, /* known */ 548*9712c20fSFrederick Mayle const struct curl_khkey *foundkey, /* found */ 549*9712c20fSFrederick Mayle enum curl_khmatch, /* libcurl's view on the keys */ 550*9712c20fSFrederick Mayle void *clientp); /* custom pointer passed from app */ 551*9712c20fSFrederick Mayle 552*9712c20fSFrederick Mayle /* parameter for the CURLOPT_USE_SSL option */ 553*9712c20fSFrederick Mayle typedef enum { 554*9712c20fSFrederick Mayle CURLUSESSL_NONE, /* do not attempt to use SSL */ 555*9712c20fSFrederick Mayle CURLUSESSL_TRY, /* try using SSL, proceed anyway otherwise */ 556*9712c20fSFrederick Mayle CURLUSESSL_CONTROL, /* SSL for the control connection or fail */ 557*9712c20fSFrederick Mayle CURLUSESSL_ALL, /* SSL for all communication or fail */ 558*9712c20fSFrederick Mayle CURLUSESSL_LAST /* not an option, never use */ 559*9712c20fSFrederick Mayle } curl_usessl; 560*9712c20fSFrederick Mayle 561*9712c20fSFrederick Mayle #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all 562*9712c20fSFrederick Mayle the obsolete stuff removed! */ 563*9712c20fSFrederick Mayle 564*9712c20fSFrederick Mayle /* Backwards compatibility with older names */ 565*9712c20fSFrederick Mayle /* These are scheduled to disappear by 2009 */ 566*9712c20fSFrederick Mayle 567*9712c20fSFrederick Mayle #define CURLFTPSSL_NONE CURLUSESSL_NONE 568*9712c20fSFrederick Mayle #define CURLFTPSSL_TRY CURLUSESSL_TRY 569*9712c20fSFrederick Mayle #define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL 570*9712c20fSFrederick Mayle #define CURLFTPSSL_ALL CURLUSESSL_ALL 571*9712c20fSFrederick Mayle #define CURLFTPSSL_LAST CURLUSESSL_LAST 572*9712c20fSFrederick Mayle #define curl_ftpssl curl_usessl 573*9712c20fSFrederick Mayle #endif /*!CURL_NO_OLDIES*/ 574*9712c20fSFrederick Mayle 575*9712c20fSFrederick Mayle /* parameter for the CURLOPT_FTP_SSL_CCC option */ 576*9712c20fSFrederick Mayle typedef enum { 577*9712c20fSFrederick Mayle CURLFTPSSL_CCC_NONE, /* do not send CCC */ 578*9712c20fSFrederick Mayle CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */ 579*9712c20fSFrederick Mayle CURLFTPSSL_CCC_ACTIVE, /* Initiate the shutdown */ 580*9712c20fSFrederick Mayle CURLFTPSSL_CCC_LAST /* not an option, never use */ 581*9712c20fSFrederick Mayle } curl_ftpccc; 582*9712c20fSFrederick Mayle 583*9712c20fSFrederick Mayle /* parameter for the CURLOPT_FTPSSLAUTH option */ 584*9712c20fSFrederick Mayle typedef enum { 585*9712c20fSFrederick Mayle CURLFTPAUTH_DEFAULT, /* let libcurl decide */ 586*9712c20fSFrederick Mayle CURLFTPAUTH_SSL, /* use "AUTH SSL" */ 587*9712c20fSFrederick Mayle CURLFTPAUTH_TLS, /* use "AUTH TLS" */ 588*9712c20fSFrederick Mayle CURLFTPAUTH_LAST /* not an option, never use */ 589*9712c20fSFrederick Mayle } curl_ftpauth; 590*9712c20fSFrederick Mayle 591*9712c20fSFrederick Mayle /* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */ 592*9712c20fSFrederick Mayle typedef enum { 593*9712c20fSFrederick Mayle CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */ 594*9712c20fSFrederick Mayle CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD 595*9712c20fSFrederick Mayle again if MKD succeeded, for SFTP this does 596*9712c20fSFrederick Mayle similar magic */ 597*9712c20fSFrederick Mayle CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD 598*9712c20fSFrederick Mayle again even if MKD failed! */ 599*9712c20fSFrederick Mayle CURLFTP_CREATE_DIR_LAST /* not an option, never use */ 600*9712c20fSFrederick Mayle } curl_ftpcreatedir; 601*9712c20fSFrederick Mayle 602*9712c20fSFrederick Mayle /* parameter for the CURLOPT_FTP_FILEMETHOD option */ 603*9712c20fSFrederick Mayle typedef enum { 604*9712c20fSFrederick Mayle CURLFTPMETHOD_DEFAULT, /* let libcurl pick */ 605*9712c20fSFrederick Mayle CURLFTPMETHOD_MULTICWD, /* single CWD operation for each path part */ 606*9712c20fSFrederick Mayle CURLFTPMETHOD_NOCWD, /* no CWD at all */ 607*9712c20fSFrederick Mayle CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */ 608*9712c20fSFrederick Mayle CURLFTPMETHOD_LAST /* not an option, never use */ 609*9712c20fSFrederick Mayle } curl_ftpmethod; 610*9712c20fSFrederick Mayle 611*9712c20fSFrederick Mayle /* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */ 612*9712c20fSFrederick Mayle #define CURLPROTO_HTTP (1<<0) 613*9712c20fSFrederick Mayle #define CURLPROTO_HTTPS (1<<1) 614*9712c20fSFrederick Mayle #define CURLPROTO_FTP (1<<2) 615*9712c20fSFrederick Mayle #define CURLPROTO_FTPS (1<<3) 616*9712c20fSFrederick Mayle #define CURLPROTO_SCP (1<<4) 617*9712c20fSFrederick Mayle #define CURLPROTO_SFTP (1<<5) 618*9712c20fSFrederick Mayle #define CURLPROTO_TELNET (1<<6) 619*9712c20fSFrederick Mayle #define CURLPROTO_LDAP (1<<7) 620*9712c20fSFrederick Mayle #define CURLPROTO_LDAPS (1<<8) 621*9712c20fSFrederick Mayle #define CURLPROTO_DICT (1<<9) 622*9712c20fSFrederick Mayle #define CURLPROTO_FILE (1<<10) 623*9712c20fSFrederick Mayle #define CURLPROTO_TFTP (1<<11) 624*9712c20fSFrederick Mayle #define CURLPROTO_ALL (~0) /* enable everything */ 625*9712c20fSFrederick Mayle 626*9712c20fSFrederick Mayle /* long may be 32 or 64 bits, but we should never depend on anything else 627*9712c20fSFrederick Mayle but 32 */ 628*9712c20fSFrederick Mayle #define CURLOPTTYPE_LONG 0 629*9712c20fSFrederick Mayle #define CURLOPTTYPE_OBJECTPOINT 10000 630*9712c20fSFrederick Mayle #define CURLOPTTYPE_FUNCTIONPOINT 20000 631*9712c20fSFrederick Mayle #define CURLOPTTYPE_OFF_T 30000 632*9712c20fSFrederick Mayle 633*9712c20fSFrederick Mayle /* name is uppercase CURLOPT_<name>, 634*9712c20fSFrederick Mayle type is one of the defined CURLOPTTYPE_<type> 635*9712c20fSFrederick Mayle number is unique identifier */ 636*9712c20fSFrederick Mayle #ifdef CINIT 637*9712c20fSFrederick Mayle #undef CINIT 638*9712c20fSFrederick Mayle #endif 639*9712c20fSFrederick Mayle 640*9712c20fSFrederick Mayle #ifdef CURL_ISOCPP 641*9712c20fSFrederick Mayle #define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number 642*9712c20fSFrederick Mayle #else 643*9712c20fSFrederick Mayle /* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ 644*9712c20fSFrederick Mayle #define LONG CURLOPTTYPE_LONG 645*9712c20fSFrederick Mayle #define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT 646*9712c20fSFrederick Mayle #define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT 647*9712c20fSFrederick Mayle #define OFF_T CURLOPTTYPE_OFF_T 648*9712c20fSFrederick Mayle #define CINIT(name,type,number) CURLOPT_/**/name = type + number 649*9712c20fSFrederick Mayle #endif 650*9712c20fSFrederick Mayle 651*9712c20fSFrederick Mayle /* 652*9712c20fSFrederick Mayle * This macro-mania below setups the CURLOPT_[what] enum, to be used with 653*9712c20fSFrederick Mayle * curl_easy_setopt(). The first argument in the CINIT() macro is the [what] 654*9712c20fSFrederick Mayle * word. 655*9712c20fSFrederick Mayle */ 656*9712c20fSFrederick Mayle 657*9712c20fSFrederick Mayle typedef enum { 658*9712c20fSFrederick Mayle /* This is the FILE * or void * the regular output should be written to. */ 659*9712c20fSFrederick Mayle CINIT(FILE, OBJECTPOINT, 1), 660*9712c20fSFrederick Mayle 661*9712c20fSFrederick Mayle /* The full URL to get/put */ 662*9712c20fSFrederick Mayle CINIT(URL, OBJECTPOINT, 2), 663*9712c20fSFrederick Mayle 664*9712c20fSFrederick Mayle /* Port number to connect to, if other than default. */ 665*9712c20fSFrederick Mayle CINIT(PORT, LONG, 3), 666*9712c20fSFrederick Mayle 667*9712c20fSFrederick Mayle /* Name of proxy to use. */ 668*9712c20fSFrederick Mayle CINIT(PROXY, OBJECTPOINT, 4), 669*9712c20fSFrederick Mayle 670*9712c20fSFrederick Mayle /* "name:password" to use when fetching. */ 671*9712c20fSFrederick Mayle CINIT(USERPWD, OBJECTPOINT, 5), 672*9712c20fSFrederick Mayle 673*9712c20fSFrederick Mayle /* "name:password" to use with proxy. */ 674*9712c20fSFrederick Mayle CINIT(PROXYUSERPWD, OBJECTPOINT, 6), 675*9712c20fSFrederick Mayle 676*9712c20fSFrederick Mayle /* Range to get, specified as an ASCII string. */ 677*9712c20fSFrederick Mayle CINIT(RANGE, OBJECTPOINT, 7), 678*9712c20fSFrederick Mayle 679*9712c20fSFrederick Mayle /* not used */ 680*9712c20fSFrederick Mayle 681*9712c20fSFrederick Mayle /* Specified file stream to upload from (use as input): */ 682*9712c20fSFrederick Mayle CINIT(INFILE, OBJECTPOINT, 9), 683*9712c20fSFrederick Mayle 684*9712c20fSFrederick Mayle /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE 685*9712c20fSFrederick Mayle * bytes big. If this is not used, error messages go to stderr instead: */ 686*9712c20fSFrederick Mayle CINIT(ERRORBUFFER, OBJECTPOINT, 10), 687*9712c20fSFrederick Mayle 688*9712c20fSFrederick Mayle /* Function that will be called to store the output (instead of fwrite). The 689*9712c20fSFrederick Mayle * parameters will use fwrite() syntax, make sure to follow them. */ 690*9712c20fSFrederick Mayle CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11), 691*9712c20fSFrederick Mayle 692*9712c20fSFrederick Mayle /* Function that will be called to read the input (instead of fread). The 693*9712c20fSFrederick Mayle * parameters will use fread() syntax, make sure to follow them. */ 694*9712c20fSFrederick Mayle CINIT(READFUNCTION, FUNCTIONPOINT, 12), 695*9712c20fSFrederick Mayle 696*9712c20fSFrederick Mayle /* Time-out the read operation after this amount of seconds */ 697*9712c20fSFrederick Mayle CINIT(TIMEOUT, LONG, 13), 698*9712c20fSFrederick Mayle 699*9712c20fSFrederick Mayle /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about 700*9712c20fSFrederick Mayle * how large the file being sent really is. That allows better error 701*9712c20fSFrederick Mayle * checking and better verifies that the upload was successful. -1 means 702*9712c20fSFrederick Mayle * unknown size. 703*9712c20fSFrederick Mayle * 704*9712c20fSFrederick Mayle * For large file support, there is also a _LARGE version of the key 705*9712c20fSFrederick Mayle * which takes an off_t type, allowing platforms with larger off_t 706*9712c20fSFrederick Mayle * sizes to handle larger files. See below for INFILESIZE_LARGE. 707*9712c20fSFrederick Mayle */ 708*9712c20fSFrederick Mayle CINIT(INFILESIZE, LONG, 14), 709*9712c20fSFrederick Mayle 710*9712c20fSFrederick Mayle /* POST static input fields. */ 711*9712c20fSFrederick Mayle CINIT(POSTFIELDS, OBJECTPOINT, 15), 712*9712c20fSFrederick Mayle 713*9712c20fSFrederick Mayle /* Set the referrer page (needed by some CGIs) */ 714*9712c20fSFrederick Mayle CINIT(REFERER, OBJECTPOINT, 16), 715*9712c20fSFrederick Mayle 716*9712c20fSFrederick Mayle /* Set the FTP PORT string (interface name, named or numerical IP address) 717*9712c20fSFrederick Mayle Use i.e '-' to use default address. */ 718*9712c20fSFrederick Mayle CINIT(FTPPORT, OBJECTPOINT, 17), 719*9712c20fSFrederick Mayle 720*9712c20fSFrederick Mayle /* Set the User-Agent string (examined by some CGIs) */ 721*9712c20fSFrederick Mayle CINIT(USERAGENT, OBJECTPOINT, 18), 722*9712c20fSFrederick Mayle 723*9712c20fSFrederick Mayle /* If the download receives less than "low speed limit" bytes/second 724*9712c20fSFrederick Mayle * during "low speed time" seconds, the operations is aborted. 725*9712c20fSFrederick Mayle * You could i.e if you have a pretty high speed connection, abort if 726*9712c20fSFrederick Mayle * it is less than 2000 bytes/sec during 20 seconds. 727*9712c20fSFrederick Mayle */ 728*9712c20fSFrederick Mayle 729*9712c20fSFrederick Mayle /* Set the "low speed limit" */ 730*9712c20fSFrederick Mayle CINIT(LOW_SPEED_LIMIT, LONG, 19), 731*9712c20fSFrederick Mayle 732*9712c20fSFrederick Mayle /* Set the "low speed time" */ 733*9712c20fSFrederick Mayle CINIT(LOW_SPEED_TIME, LONG, 20), 734*9712c20fSFrederick Mayle 735*9712c20fSFrederick Mayle /* Set the continuation offset. 736*9712c20fSFrederick Mayle * 737*9712c20fSFrederick Mayle * Note there is also a _LARGE version of this key which uses 738*9712c20fSFrederick Mayle * off_t types, allowing for large file offsets on platforms which 739*9712c20fSFrederick Mayle * use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE. 740*9712c20fSFrederick Mayle */ 741*9712c20fSFrederick Mayle CINIT(RESUME_FROM, LONG, 21), 742*9712c20fSFrederick Mayle 743*9712c20fSFrederick Mayle /* Set cookie in request: */ 744*9712c20fSFrederick Mayle CINIT(COOKIE, OBJECTPOINT, 22), 745*9712c20fSFrederick Mayle 746*9712c20fSFrederick Mayle /* This points to a linked list of headers, struct curl_slist kind */ 747*9712c20fSFrederick Mayle CINIT(HTTPHEADER, OBJECTPOINT, 23), 748*9712c20fSFrederick Mayle 749*9712c20fSFrederick Mayle /* This points to a linked list of post entries, struct curl_httppost */ 750*9712c20fSFrederick Mayle CINIT(HTTPPOST, OBJECTPOINT, 24), 751*9712c20fSFrederick Mayle 752*9712c20fSFrederick Mayle /* name of the file keeping your private SSL-certificate */ 753*9712c20fSFrederick Mayle CINIT(SSLCERT, OBJECTPOINT, 25), 754*9712c20fSFrederick Mayle 755*9712c20fSFrederick Mayle /* password for the SSL or SSH private key */ 756*9712c20fSFrederick Mayle CINIT(KEYPASSWD, OBJECTPOINT, 26), 757*9712c20fSFrederick Mayle 758*9712c20fSFrederick Mayle /* send TYPE parameter? */ 759*9712c20fSFrederick Mayle CINIT(CRLF, LONG, 27), 760*9712c20fSFrederick Mayle 761*9712c20fSFrederick Mayle /* send linked-list of QUOTE commands */ 762*9712c20fSFrederick Mayle CINIT(QUOTE, OBJECTPOINT, 28), 763*9712c20fSFrederick Mayle 764*9712c20fSFrederick Mayle /* send FILE * or void * to store headers to, if you use a callback it 765*9712c20fSFrederick Mayle is simply passed to the callback unmodified */ 766*9712c20fSFrederick Mayle CINIT(WRITEHEADER, OBJECTPOINT, 29), 767*9712c20fSFrederick Mayle 768*9712c20fSFrederick Mayle /* point to a file to read the initial cookies from, also enables 769*9712c20fSFrederick Mayle "cookie awareness" */ 770*9712c20fSFrederick Mayle CINIT(COOKIEFILE, OBJECTPOINT, 31), 771*9712c20fSFrederick Mayle 772*9712c20fSFrederick Mayle /* What version to specifically try to use. 773*9712c20fSFrederick Mayle See CURL_SSLVERSION defines below. */ 774*9712c20fSFrederick Mayle CINIT(SSLVERSION, LONG, 32), 775*9712c20fSFrederick Mayle 776*9712c20fSFrederick Mayle /* What kind of HTTP time condition to use, see defines */ 777*9712c20fSFrederick Mayle CINIT(TIMECONDITION, LONG, 33), 778*9712c20fSFrederick Mayle 779*9712c20fSFrederick Mayle /* Time to use with the above condition. Specified in number of seconds 780*9712c20fSFrederick Mayle since 1 Jan 1970 */ 781*9712c20fSFrederick Mayle CINIT(TIMEVALUE, LONG, 34), 782*9712c20fSFrederick Mayle 783*9712c20fSFrederick Mayle /* 35 = OBSOLETE */ 784*9712c20fSFrederick Mayle 785*9712c20fSFrederick Mayle /* Custom request, for customizing the get command like 786*9712c20fSFrederick Mayle HTTP: DELETE, TRACE and others 787*9712c20fSFrederick Mayle FTP: to use a different list command 788*9712c20fSFrederick Mayle */ 789*9712c20fSFrederick Mayle CINIT(CUSTOMREQUEST, OBJECTPOINT, 36), 790*9712c20fSFrederick Mayle 791*9712c20fSFrederick Mayle /* HTTP request, for odd commands like DELETE, TRACE and others */ 792*9712c20fSFrederick Mayle CINIT(STDERR, OBJECTPOINT, 37), 793*9712c20fSFrederick Mayle 794*9712c20fSFrederick Mayle /* 38 is not used */ 795*9712c20fSFrederick Mayle 796*9712c20fSFrederick Mayle /* send linked-list of post-transfer QUOTE commands */ 797*9712c20fSFrederick Mayle CINIT(POSTQUOTE, OBJECTPOINT, 39), 798*9712c20fSFrederick Mayle 799*9712c20fSFrederick Mayle /* Pass a pointer to string of the output using full variable-replacement 800*9712c20fSFrederick Mayle as described elsewhere. */ 801*9712c20fSFrederick Mayle CINIT(WRITEINFO, OBJECTPOINT, 40), 802*9712c20fSFrederick Mayle 803*9712c20fSFrederick Mayle CINIT(VERBOSE, LONG, 41), /* talk a lot */ 804*9712c20fSFrederick Mayle CINIT(HEADER, LONG, 42), /* throw the header out too */ 805*9712c20fSFrederick Mayle CINIT(NOPROGRESS, LONG, 43), /* shut off the progress meter */ 806*9712c20fSFrederick Mayle CINIT(NOBODY, LONG, 44), /* use HEAD to get http document */ 807*9712c20fSFrederick Mayle CINIT(FAILONERROR, LONG, 45), /* no output on http error codes >= 300 */ 808*9712c20fSFrederick Mayle CINIT(UPLOAD, LONG, 46), /* this is an upload */ 809*9712c20fSFrederick Mayle CINIT(POST, LONG, 47), /* HTTP POST method */ 810*9712c20fSFrederick Mayle CINIT(DIRLISTONLY, LONG, 48), /* return bare names when listing directories */ 811*9712c20fSFrederick Mayle 812*9712c20fSFrederick Mayle CINIT(APPEND, LONG, 50), /* Append instead of overwrite on upload! */ 813*9712c20fSFrederick Mayle 814*9712c20fSFrederick Mayle /* Specify whether to read the user+password from the .netrc or the URL. 815*9712c20fSFrederick Mayle * This must be one of the CURL_NETRC_* enums below. */ 816*9712c20fSFrederick Mayle CINIT(NETRC, LONG, 51), 817*9712c20fSFrederick Mayle 818*9712c20fSFrederick Mayle CINIT(FOLLOWLOCATION, LONG, 52), /* use Location: Luke! */ 819*9712c20fSFrederick Mayle 820*9712c20fSFrederick Mayle CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */ 821*9712c20fSFrederick Mayle CINIT(PUT, LONG, 54), /* HTTP PUT */ 822*9712c20fSFrederick Mayle 823*9712c20fSFrederick Mayle /* 55 = OBSOLETE */ 824*9712c20fSFrederick Mayle 825*9712c20fSFrederick Mayle /* Function that will be called instead of the internal progress display 826*9712c20fSFrederick Mayle * function. This function should be defined as the curl_progress_callback 827*9712c20fSFrederick Mayle * prototype defines. */ 828*9712c20fSFrederick Mayle CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56), 829*9712c20fSFrederick Mayle 830*9712c20fSFrederick Mayle /* Data passed to the progress callback */ 831*9712c20fSFrederick Mayle CINIT(PROGRESSDATA, OBJECTPOINT, 57), 832*9712c20fSFrederick Mayle 833*9712c20fSFrederick Mayle /* We want the referrer field set automatically when following locations */ 834*9712c20fSFrederick Mayle CINIT(AUTOREFERER, LONG, 58), 835*9712c20fSFrederick Mayle 836*9712c20fSFrederick Mayle /* Port of the proxy, can be set in the proxy string as well with: 837*9712c20fSFrederick Mayle "[host]:[port]" */ 838*9712c20fSFrederick Mayle CINIT(PROXYPORT, LONG, 59), 839*9712c20fSFrederick Mayle 840*9712c20fSFrederick Mayle /* size of the POST input data, if strlen() is not good to use */ 841*9712c20fSFrederick Mayle CINIT(POSTFIELDSIZE, LONG, 60), 842*9712c20fSFrederick Mayle 843*9712c20fSFrederick Mayle /* tunnel non-http operations through a HTTP proxy */ 844*9712c20fSFrederick Mayle CINIT(HTTPPROXYTUNNEL, LONG, 61), 845*9712c20fSFrederick Mayle 846*9712c20fSFrederick Mayle /* Set the interface string to use as outgoing network interface */ 847*9712c20fSFrederick Mayle CINIT(INTERFACE, OBJECTPOINT, 62), 848*9712c20fSFrederick Mayle 849*9712c20fSFrederick Mayle /* Set the krb4/5 security level, this also enables krb4/5 awareness. This 850*9712c20fSFrederick Mayle * is a string, 'clear', 'safe', 'confidential' or 'private'. If the string 851*9712c20fSFrederick Mayle * is set but doesn't match one of these, 'private' will be used. */ 852*9712c20fSFrederick Mayle CINIT(KRBLEVEL, OBJECTPOINT, 63), 853*9712c20fSFrederick Mayle 854*9712c20fSFrederick Mayle /* Set if we should verify the peer in ssl handshake, set 1 to verify. */ 855*9712c20fSFrederick Mayle CINIT(SSL_VERIFYPEER, LONG, 64), 856*9712c20fSFrederick Mayle 857*9712c20fSFrederick Mayle /* The CApath or CAfile used to validate the peer certificate 858*9712c20fSFrederick Mayle this option is used only if SSL_VERIFYPEER is true */ 859*9712c20fSFrederick Mayle CINIT(CAINFO, OBJECTPOINT, 65), 860*9712c20fSFrederick Mayle 861*9712c20fSFrederick Mayle /* 66 = OBSOLETE */ 862*9712c20fSFrederick Mayle /* 67 = OBSOLETE */ 863*9712c20fSFrederick Mayle 864*9712c20fSFrederick Mayle /* Maximum number of http redirects to follow */ 865*9712c20fSFrederick Mayle CINIT(MAXREDIRS, LONG, 68), 866*9712c20fSFrederick Mayle 867*9712c20fSFrederick Mayle /* Pass a long set to 1 to get the date of the requested document (if 868*9712c20fSFrederick Mayle possible)! Pass a zero to shut it off. */ 869*9712c20fSFrederick Mayle CINIT(FILETIME, LONG, 69), 870*9712c20fSFrederick Mayle 871*9712c20fSFrederick Mayle /* This points to a linked list of telnet options */ 872*9712c20fSFrederick Mayle CINIT(TELNETOPTIONS, OBJECTPOINT, 70), 873*9712c20fSFrederick Mayle 874*9712c20fSFrederick Mayle /* Max amount of cached alive connections */ 875*9712c20fSFrederick Mayle CINIT(MAXCONNECTS, LONG, 71), 876*9712c20fSFrederick Mayle 877*9712c20fSFrederick Mayle /* What policy to use when closing connections when the cache is filled 878*9712c20fSFrederick Mayle up */ 879*9712c20fSFrederick Mayle CINIT(CLOSEPOLICY, LONG, 72), 880*9712c20fSFrederick Mayle 881*9712c20fSFrederick Mayle /* 73 = OBSOLETE */ 882*9712c20fSFrederick Mayle 883*9712c20fSFrederick Mayle /* Set to explicitly use a new connection for the upcoming transfer. 884*9712c20fSFrederick Mayle Do not use this unless you're absolutely sure of this, as it makes the 885*9712c20fSFrederick Mayle operation slower and is less friendly for the network. */ 886*9712c20fSFrederick Mayle CINIT(FRESH_CONNECT, LONG, 74), 887*9712c20fSFrederick Mayle 888*9712c20fSFrederick Mayle /* Set to explicitly forbid the upcoming transfer's connection to be re-used 889*9712c20fSFrederick Mayle when done. Do not use this unless you're absolutely sure of this, as it 890*9712c20fSFrederick Mayle makes the operation slower and is less friendly for the network. */ 891*9712c20fSFrederick Mayle CINIT(FORBID_REUSE, LONG, 75), 892*9712c20fSFrederick Mayle 893*9712c20fSFrederick Mayle /* Set to a file name that contains random data for libcurl to use to 894*9712c20fSFrederick Mayle seed the random engine when doing SSL connects. */ 895*9712c20fSFrederick Mayle CINIT(RANDOM_FILE, OBJECTPOINT, 76), 896*9712c20fSFrederick Mayle 897*9712c20fSFrederick Mayle /* Set to the Entropy Gathering Daemon socket pathname */ 898*9712c20fSFrederick Mayle CINIT(EGDSOCKET, OBJECTPOINT, 77), 899*9712c20fSFrederick Mayle 900*9712c20fSFrederick Mayle /* Time-out connect operations after this amount of seconds, if connects 901*9712c20fSFrederick Mayle are OK within this time, then fine... This only aborts the connect 902*9712c20fSFrederick Mayle phase. [Only works on unix-style/SIGALRM operating systems] */ 903*9712c20fSFrederick Mayle CINIT(CONNECTTIMEOUT, LONG, 78), 904*9712c20fSFrederick Mayle 905*9712c20fSFrederick Mayle /* Function that will be called to store headers (instead of fwrite). The 906*9712c20fSFrederick Mayle * parameters will use fwrite() syntax, make sure to follow them. */ 907*9712c20fSFrederick Mayle CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79), 908*9712c20fSFrederick Mayle 909*9712c20fSFrederick Mayle /* Set this to force the HTTP request to get back to GET. Only really usable 910*9712c20fSFrederick Mayle if POST, PUT or a custom request have been used first. 911*9712c20fSFrederick Mayle */ 912*9712c20fSFrederick Mayle CINIT(HTTPGET, LONG, 80), 913*9712c20fSFrederick Mayle 914*9712c20fSFrederick Mayle /* Set if we should verify the Common name from the peer certificate in ssl 915*9712c20fSFrederick Mayle * handshake, set 1 to check existence, 2 to ensure that it matches the 916*9712c20fSFrederick Mayle * provided hostname. */ 917*9712c20fSFrederick Mayle CINIT(SSL_VERIFYHOST, LONG, 81), 918*9712c20fSFrederick Mayle 919*9712c20fSFrederick Mayle /* Specify which file name to write all known cookies in after completed 920*9712c20fSFrederick Mayle operation. Set file name to "-" (dash) to make it go to stdout. */ 921*9712c20fSFrederick Mayle CINIT(COOKIEJAR, OBJECTPOINT, 82), 922*9712c20fSFrederick Mayle 923*9712c20fSFrederick Mayle /* Specify which SSL ciphers to use */ 924*9712c20fSFrederick Mayle CINIT(SSL_CIPHER_LIST, OBJECTPOINT, 83), 925*9712c20fSFrederick Mayle 926*9712c20fSFrederick Mayle /* Specify which HTTP version to use! This must be set to one of the 927*9712c20fSFrederick Mayle CURL_HTTP_VERSION* enums set below. */ 928*9712c20fSFrederick Mayle CINIT(HTTP_VERSION, LONG, 84), 929*9712c20fSFrederick Mayle 930*9712c20fSFrederick Mayle /* Specifically switch on or off the FTP engine's use of the EPSV command. By 931*9712c20fSFrederick Mayle default, that one will always be attempted before the more traditional 932*9712c20fSFrederick Mayle PASV command. */ 933*9712c20fSFrederick Mayle CINIT(FTP_USE_EPSV, LONG, 85), 934*9712c20fSFrederick Mayle 935*9712c20fSFrederick Mayle /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */ 936*9712c20fSFrederick Mayle CINIT(SSLCERTTYPE, OBJECTPOINT, 86), 937*9712c20fSFrederick Mayle 938*9712c20fSFrederick Mayle /* name of the file keeping your private SSL-key */ 939*9712c20fSFrederick Mayle CINIT(SSLKEY, OBJECTPOINT, 87), 940*9712c20fSFrederick Mayle 941*9712c20fSFrederick Mayle /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */ 942*9712c20fSFrederick Mayle CINIT(SSLKEYTYPE, OBJECTPOINT, 88), 943*9712c20fSFrederick Mayle 944*9712c20fSFrederick Mayle /* crypto engine for the SSL-sub system */ 945*9712c20fSFrederick Mayle CINIT(SSLENGINE, OBJECTPOINT, 89), 946*9712c20fSFrederick Mayle 947*9712c20fSFrederick Mayle /* set the crypto engine for the SSL-sub system as default 948*9712c20fSFrederick Mayle the param has no meaning... 949*9712c20fSFrederick Mayle */ 950*9712c20fSFrederick Mayle CINIT(SSLENGINE_DEFAULT, LONG, 90), 951*9712c20fSFrederick Mayle 952*9712c20fSFrederick Mayle /* Non-zero value means to use the global dns cache */ 953*9712c20fSFrederick Mayle CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* To become OBSOLETE soon */ 954*9712c20fSFrederick Mayle 955*9712c20fSFrederick Mayle /* DNS cache timeout */ 956*9712c20fSFrederick Mayle CINIT(DNS_CACHE_TIMEOUT, LONG, 92), 957*9712c20fSFrederick Mayle 958*9712c20fSFrederick Mayle /* send linked-list of pre-transfer QUOTE commands */ 959*9712c20fSFrederick Mayle CINIT(PREQUOTE, OBJECTPOINT, 93), 960*9712c20fSFrederick Mayle 961*9712c20fSFrederick Mayle /* set the debug function */ 962*9712c20fSFrederick Mayle CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94), 963*9712c20fSFrederick Mayle 964*9712c20fSFrederick Mayle /* set the data for the debug function */ 965*9712c20fSFrederick Mayle CINIT(DEBUGDATA, OBJECTPOINT, 95), 966*9712c20fSFrederick Mayle 967*9712c20fSFrederick Mayle /* mark this as start of a cookie session */ 968*9712c20fSFrederick Mayle CINIT(COOKIESESSION, LONG, 96), 969*9712c20fSFrederick Mayle 970*9712c20fSFrederick Mayle /* The CApath directory used to validate the peer certificate 971*9712c20fSFrederick Mayle this option is used only if SSL_VERIFYPEER is true */ 972*9712c20fSFrederick Mayle CINIT(CAPATH, OBJECTPOINT, 97), 973*9712c20fSFrederick Mayle 974*9712c20fSFrederick Mayle /* Instruct libcurl to use a smaller receive buffer */ 975*9712c20fSFrederick Mayle CINIT(BUFFERSIZE, LONG, 98), 976*9712c20fSFrederick Mayle 977*9712c20fSFrederick Mayle /* Instruct libcurl to not use any signal/alarm handlers, even when using 978*9712c20fSFrederick Mayle timeouts. This option is useful for multi-threaded applications. 979*9712c20fSFrederick Mayle See libcurl-the-guide for more background information. */ 980*9712c20fSFrederick Mayle CINIT(NOSIGNAL, LONG, 99), 981*9712c20fSFrederick Mayle 982*9712c20fSFrederick Mayle /* Provide a CURLShare for mutexing non-ts data */ 983*9712c20fSFrederick Mayle CINIT(SHARE, OBJECTPOINT, 100), 984*9712c20fSFrederick Mayle 985*9712c20fSFrederick Mayle /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default), 986*9712c20fSFrederick Mayle CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and CURLPROXY_SOCKS5. */ 987*9712c20fSFrederick Mayle CINIT(PROXYTYPE, LONG, 101), 988*9712c20fSFrederick Mayle 989*9712c20fSFrederick Mayle /* Set the Accept-Encoding string. Use this to tell a server you would like 990*9712c20fSFrederick Mayle the response to be compressed. */ 991*9712c20fSFrederick Mayle CINIT(ENCODING, OBJECTPOINT, 102), 992*9712c20fSFrederick Mayle 993*9712c20fSFrederick Mayle /* Set pointer to private data */ 994*9712c20fSFrederick Mayle CINIT(PRIVATE, OBJECTPOINT, 103), 995*9712c20fSFrederick Mayle 996*9712c20fSFrederick Mayle /* Set aliases for HTTP 200 in the HTTP Response header */ 997*9712c20fSFrederick Mayle CINIT(HTTP200ALIASES, OBJECTPOINT, 104), 998*9712c20fSFrederick Mayle 999*9712c20fSFrederick Mayle /* Continue to send authentication (user+password) when following locations, 1000*9712c20fSFrederick Mayle even when hostname changed. This can potentially send off the name 1001*9712c20fSFrederick Mayle and password to whatever host the server decides. */ 1002*9712c20fSFrederick Mayle CINIT(UNRESTRICTED_AUTH, LONG, 105), 1003*9712c20fSFrederick Mayle 1004*9712c20fSFrederick Mayle /* Specifically switch on or off the FTP engine's use of the EPRT command ( it 1005*9712c20fSFrederick Mayle also disables the LPRT attempt). By default, those ones will always be 1006*9712c20fSFrederick Mayle attempted before the good old traditional PORT command. */ 1007*9712c20fSFrederick Mayle CINIT(FTP_USE_EPRT, LONG, 106), 1008*9712c20fSFrederick Mayle 1009*9712c20fSFrederick Mayle /* Set this to a bitmask value to enable the particular authentications 1010*9712c20fSFrederick Mayle methods you like. Use this in combination with CURLOPT_USERPWD. 1011*9712c20fSFrederick Mayle Note that setting multiple bits may cause extra network round-trips. */ 1012*9712c20fSFrederick Mayle CINIT(HTTPAUTH, LONG, 107), 1013*9712c20fSFrederick Mayle 1014*9712c20fSFrederick Mayle /* Set the ssl context callback function, currently only for OpenSSL ssl_ctx 1015*9712c20fSFrederick Mayle in second argument. The function must be matching the 1016*9712c20fSFrederick Mayle curl_ssl_ctx_callback proto. */ 1017*9712c20fSFrederick Mayle CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108), 1018*9712c20fSFrederick Mayle 1019*9712c20fSFrederick Mayle /* Set the userdata for the ssl context callback function's third 1020*9712c20fSFrederick Mayle argument */ 1021*9712c20fSFrederick Mayle CINIT(SSL_CTX_DATA, OBJECTPOINT, 109), 1022*9712c20fSFrederick Mayle 1023*9712c20fSFrederick Mayle /* FTP Option that causes missing dirs to be created on the remote server. 1024*9712c20fSFrederick Mayle In 7.19.4 we introduced the convenience enums for this option using the 1025*9712c20fSFrederick Mayle CURLFTP_CREATE_DIR prefix. 1026*9712c20fSFrederick Mayle */ 1027*9712c20fSFrederick Mayle CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110), 1028*9712c20fSFrederick Mayle 1029*9712c20fSFrederick Mayle /* Set this to a bitmask value to enable the particular authentications 1030*9712c20fSFrederick Mayle methods you like. Use this in combination with CURLOPT_PROXYUSERPWD. 1031*9712c20fSFrederick Mayle Note that setting multiple bits may cause extra network round-trips. */ 1032*9712c20fSFrederick Mayle CINIT(PROXYAUTH, LONG, 111), 1033*9712c20fSFrederick Mayle 1034*9712c20fSFrederick Mayle /* FTP option that changes the timeout, in seconds, associated with 1035*9712c20fSFrederick Mayle getting a response. This is different from transfer timeout time and 1036*9712c20fSFrederick Mayle essentially places a demand on the FTP server to acknowledge commands 1037*9712c20fSFrederick Mayle in a timely manner. */ 1038*9712c20fSFrederick Mayle CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112), 1039*9712c20fSFrederick Mayle 1040*9712c20fSFrederick Mayle /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to 1041*9712c20fSFrederick Mayle tell libcurl to resolve names to those IP versions only. This only has 1042*9712c20fSFrederick Mayle affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */ 1043*9712c20fSFrederick Mayle CINIT(IPRESOLVE, LONG, 113), 1044*9712c20fSFrederick Mayle 1045*9712c20fSFrederick Mayle /* Set this option to limit the size of a file that will be downloaded from 1046*9712c20fSFrederick Mayle an HTTP or FTP server. 1047*9712c20fSFrederick Mayle 1048*9712c20fSFrederick Mayle Note there is also _LARGE version which adds large file support for 1049*9712c20fSFrederick Mayle platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. */ 1050*9712c20fSFrederick Mayle CINIT(MAXFILESIZE, LONG, 114), 1051*9712c20fSFrederick Mayle 1052*9712c20fSFrederick Mayle /* See the comment for INFILESIZE above, but in short, specifies 1053*9712c20fSFrederick Mayle * the size of the file being uploaded. -1 means unknown. 1054*9712c20fSFrederick Mayle */ 1055*9712c20fSFrederick Mayle CINIT(INFILESIZE_LARGE, OFF_T, 115), 1056*9712c20fSFrederick Mayle 1057*9712c20fSFrederick Mayle /* Sets the continuation offset. There is also a LONG version of this; 1058*9712c20fSFrederick Mayle * look above for RESUME_FROM. 1059*9712c20fSFrederick Mayle */ 1060*9712c20fSFrederick Mayle CINIT(RESUME_FROM_LARGE, OFF_T, 116), 1061*9712c20fSFrederick Mayle 1062*9712c20fSFrederick Mayle /* Sets the maximum size of data that will be downloaded from 1063*9712c20fSFrederick Mayle * an HTTP or FTP server. See MAXFILESIZE above for the LONG version. 1064*9712c20fSFrederick Mayle */ 1065*9712c20fSFrederick Mayle CINIT(MAXFILESIZE_LARGE, OFF_T, 117), 1066*9712c20fSFrederick Mayle 1067*9712c20fSFrederick Mayle /* Set this option to the file name of your .netrc file you want libcurl 1068*9712c20fSFrederick Mayle to parse (using the CURLOPT_NETRC option). If not set, libcurl will do 1069*9712c20fSFrederick Mayle a poor attempt to find the user's home directory and check for a .netrc 1070*9712c20fSFrederick Mayle file in there. */ 1071*9712c20fSFrederick Mayle CINIT(NETRC_FILE, OBJECTPOINT, 118), 1072*9712c20fSFrederick Mayle 1073*9712c20fSFrederick Mayle /* Enable SSL/TLS for FTP, pick one of: 1074*9712c20fSFrederick Mayle CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise 1075*9712c20fSFrederick Mayle CURLFTPSSL_CONTROL - SSL for the control connection or fail 1076*9712c20fSFrederick Mayle CURLFTPSSL_ALL - SSL for all communication or fail 1077*9712c20fSFrederick Mayle */ 1078*9712c20fSFrederick Mayle CINIT(USE_SSL, LONG, 119), 1079*9712c20fSFrederick Mayle 1080*9712c20fSFrederick Mayle /* The _LARGE version of the standard POSTFIELDSIZE option */ 1081*9712c20fSFrederick Mayle CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120), 1082*9712c20fSFrederick Mayle 1083*9712c20fSFrederick Mayle /* Enable/disable the TCP Nagle algorithm */ 1084*9712c20fSFrederick Mayle CINIT(TCP_NODELAY, LONG, 121), 1085*9712c20fSFrederick Mayle 1086*9712c20fSFrederick Mayle /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ 1087*9712c20fSFrederick Mayle /* 123 OBSOLETE. Gone in 7.16.0 */ 1088*9712c20fSFrederick Mayle /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ 1089*9712c20fSFrederick Mayle /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ 1090*9712c20fSFrederick Mayle /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ 1091*9712c20fSFrederick Mayle /* 127 OBSOLETE. Gone in 7.16.0 */ 1092*9712c20fSFrederick Mayle /* 128 OBSOLETE. Gone in 7.16.0 */ 1093*9712c20fSFrederick Mayle 1094*9712c20fSFrederick Mayle /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option 1095*9712c20fSFrederick Mayle can be used to change libcurl's default action which is to first try 1096*9712c20fSFrederick Mayle "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK 1097*9712c20fSFrederick Mayle response has been received. 1098*9712c20fSFrederick Mayle 1099*9712c20fSFrederick Mayle Available parameters are: 1100*9712c20fSFrederick Mayle CURLFTPAUTH_DEFAULT - let libcurl decide 1101*9712c20fSFrederick Mayle CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS 1102*9712c20fSFrederick Mayle CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL 1103*9712c20fSFrederick Mayle */ 1104*9712c20fSFrederick Mayle CINIT(FTPSSLAUTH, LONG, 129), 1105*9712c20fSFrederick Mayle 1106*9712c20fSFrederick Mayle CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130), 1107*9712c20fSFrederick Mayle CINIT(IOCTLDATA, OBJECTPOINT, 131), 1108*9712c20fSFrederick Mayle 1109*9712c20fSFrederick Mayle /* 132 OBSOLETE. Gone in 7.16.0 */ 1110*9712c20fSFrederick Mayle /* 133 OBSOLETE. Gone in 7.16.0 */ 1111*9712c20fSFrederick Mayle 1112*9712c20fSFrederick Mayle /* zero terminated string for pass on to the FTP server when asked for 1113*9712c20fSFrederick Mayle "account" info */ 1114*9712c20fSFrederick Mayle CINIT(FTP_ACCOUNT, OBJECTPOINT, 134), 1115*9712c20fSFrederick Mayle 1116*9712c20fSFrederick Mayle /* feed cookies into cookie engine */ 1117*9712c20fSFrederick Mayle CINIT(COOKIELIST, OBJECTPOINT, 135), 1118*9712c20fSFrederick Mayle 1119*9712c20fSFrederick Mayle /* ignore Content-Length */ 1120*9712c20fSFrederick Mayle CINIT(IGNORE_CONTENT_LENGTH, LONG, 136), 1121*9712c20fSFrederick Mayle 1122*9712c20fSFrederick Mayle /* Set to non-zero to skip the IP address received in a 227 PASV FTP server 1123*9712c20fSFrederick Mayle response. Typically used for FTP-SSL purposes but is not restricted to 1124*9712c20fSFrederick Mayle that. libcurl will then instead use the same IP address it used for the 1125*9712c20fSFrederick Mayle control connection. */ 1126*9712c20fSFrederick Mayle CINIT(FTP_SKIP_PASV_IP, LONG, 137), 1127*9712c20fSFrederick Mayle 1128*9712c20fSFrederick Mayle /* Select "file method" to use when doing FTP, see the curl_ftpmethod 1129*9712c20fSFrederick Mayle above. */ 1130*9712c20fSFrederick Mayle CINIT(FTP_FILEMETHOD, LONG, 138), 1131*9712c20fSFrederick Mayle 1132*9712c20fSFrederick Mayle /* Local port number to bind the socket to */ 1133*9712c20fSFrederick Mayle CINIT(LOCALPORT, LONG, 139), 1134*9712c20fSFrederick Mayle 1135*9712c20fSFrederick Mayle /* Number of ports to try, including the first one set with LOCALPORT. 1136*9712c20fSFrederick Mayle Thus, setting it to 1 will make no additional attempts but the first. 1137*9712c20fSFrederick Mayle */ 1138*9712c20fSFrederick Mayle CINIT(LOCALPORTRANGE, LONG, 140), 1139*9712c20fSFrederick Mayle 1140*9712c20fSFrederick Mayle /* no transfer, set up connection and let application use the socket by 1141*9712c20fSFrederick Mayle extracting it with CURLINFO_LASTSOCKET */ 1142*9712c20fSFrederick Mayle CINIT(CONNECT_ONLY, LONG, 141), 1143*9712c20fSFrederick Mayle 1144*9712c20fSFrederick Mayle /* Function that will be called to convert from the 1145*9712c20fSFrederick Mayle network encoding (instead of using the iconv calls in libcurl) */ 1146*9712c20fSFrederick Mayle CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142), 1147*9712c20fSFrederick Mayle 1148*9712c20fSFrederick Mayle /* Function that will be called to convert to the 1149*9712c20fSFrederick Mayle network encoding (instead of using the iconv calls in libcurl) */ 1150*9712c20fSFrederick Mayle CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143), 1151*9712c20fSFrederick Mayle 1152*9712c20fSFrederick Mayle /* Function that will be called to convert from UTF8 1153*9712c20fSFrederick Mayle (instead of using the iconv calls in libcurl) 1154*9712c20fSFrederick Mayle Note that this is used only for SSL certificate processing */ 1155*9712c20fSFrederick Mayle CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144), 1156*9712c20fSFrederick Mayle 1157*9712c20fSFrederick Mayle /* if the connection proceeds too quickly then need to slow it down */ 1158*9712c20fSFrederick Mayle /* limit-rate: maximum number of bytes per second to send or receive */ 1159*9712c20fSFrederick Mayle CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145), 1160*9712c20fSFrederick Mayle CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146), 1161*9712c20fSFrederick Mayle 1162*9712c20fSFrederick Mayle /* Pointer to command string to send if USER/PASS fails. */ 1163*9712c20fSFrederick Mayle CINIT(FTP_ALTERNATIVE_TO_USER, OBJECTPOINT, 147), 1164*9712c20fSFrederick Mayle 1165*9712c20fSFrederick Mayle /* callback function for setting socket options */ 1166*9712c20fSFrederick Mayle CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148), 1167*9712c20fSFrederick Mayle CINIT(SOCKOPTDATA, OBJECTPOINT, 149), 1168*9712c20fSFrederick Mayle 1169*9712c20fSFrederick Mayle /* set to 0 to disable session ID re-use for this transfer, default is 1170*9712c20fSFrederick Mayle enabled (== 1) */ 1171*9712c20fSFrederick Mayle CINIT(SSL_SESSIONID_CACHE, LONG, 150), 1172*9712c20fSFrederick Mayle 1173*9712c20fSFrederick Mayle /* allowed SSH authentication methods */ 1174*9712c20fSFrederick Mayle CINIT(SSH_AUTH_TYPES, LONG, 151), 1175*9712c20fSFrederick Mayle 1176*9712c20fSFrederick Mayle /* Used by scp/sftp to do public/private key authentication */ 1177*9712c20fSFrederick Mayle CINIT(SSH_PUBLIC_KEYFILE, OBJECTPOINT, 152), 1178*9712c20fSFrederick Mayle CINIT(SSH_PRIVATE_KEYFILE, OBJECTPOINT, 153), 1179*9712c20fSFrederick Mayle 1180*9712c20fSFrederick Mayle /* Send CCC (Clear Command Channel) after authentication */ 1181*9712c20fSFrederick Mayle CINIT(FTP_SSL_CCC, LONG, 154), 1182*9712c20fSFrederick Mayle 1183*9712c20fSFrederick Mayle /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */ 1184*9712c20fSFrederick Mayle CINIT(TIMEOUT_MS, LONG, 155), 1185*9712c20fSFrederick Mayle CINIT(CONNECTTIMEOUT_MS, LONG, 156), 1186*9712c20fSFrederick Mayle 1187*9712c20fSFrederick Mayle /* set to zero to disable the libcurl's decoding and thus pass the raw body 1188*9712c20fSFrederick Mayle data to the application even when it is encoded/compressed */ 1189*9712c20fSFrederick Mayle CINIT(HTTP_TRANSFER_DECODING, LONG, 157), 1190*9712c20fSFrederick Mayle CINIT(HTTP_CONTENT_DECODING, LONG, 158), 1191*9712c20fSFrederick Mayle 1192*9712c20fSFrederick Mayle /* Permission used when creating new files and directories on the remote 1193*9712c20fSFrederick Mayle server for protocols that support it, SFTP/SCP/FILE */ 1194*9712c20fSFrederick Mayle CINIT(NEW_FILE_PERMS, LONG, 159), 1195*9712c20fSFrederick Mayle CINIT(NEW_DIRECTORY_PERMS, LONG, 160), 1196*9712c20fSFrederick Mayle 1197*9712c20fSFrederick Mayle /* Set the behaviour of POST when redirecting. Values must be set to one 1198*9712c20fSFrederick Mayle of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */ 1199*9712c20fSFrederick Mayle CINIT(POSTREDIR, LONG, 161), 1200*9712c20fSFrederick Mayle 1201*9712c20fSFrederick Mayle /* used by scp/sftp to verify the host's public key */ 1202*9712c20fSFrederick Mayle CINIT(SSH_HOST_PUBLIC_KEY_MD5, OBJECTPOINT, 162), 1203*9712c20fSFrederick Mayle 1204*9712c20fSFrederick Mayle /* Callback function for opening socket (instead of socket(2)). Optionally, 1205*9712c20fSFrederick Mayle callback is able change the address or refuse to connect returning 1206*9712c20fSFrederick Mayle CURL_SOCKET_BAD. The callback should have type 1207*9712c20fSFrederick Mayle curl_opensocket_callback */ 1208*9712c20fSFrederick Mayle CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163), 1209*9712c20fSFrederick Mayle CINIT(OPENSOCKETDATA, OBJECTPOINT, 164), 1210*9712c20fSFrederick Mayle 1211*9712c20fSFrederick Mayle /* POST volatile input fields. */ 1212*9712c20fSFrederick Mayle CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165), 1213*9712c20fSFrederick Mayle 1214*9712c20fSFrederick Mayle /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */ 1215*9712c20fSFrederick Mayle CINIT(PROXY_TRANSFER_MODE, LONG, 166), 1216*9712c20fSFrederick Mayle 1217*9712c20fSFrederick Mayle /* Callback function for seeking in the input stream */ 1218*9712c20fSFrederick Mayle CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167), 1219*9712c20fSFrederick Mayle CINIT(SEEKDATA, OBJECTPOINT, 168), 1220*9712c20fSFrederick Mayle 1221*9712c20fSFrederick Mayle /* CRL file */ 1222*9712c20fSFrederick Mayle CINIT(CRLFILE, OBJECTPOINT, 169), 1223*9712c20fSFrederick Mayle 1224*9712c20fSFrederick Mayle /* Issuer certificate */ 1225*9712c20fSFrederick Mayle CINIT(ISSUERCERT, OBJECTPOINT, 170), 1226*9712c20fSFrederick Mayle 1227*9712c20fSFrederick Mayle /* (IPv6) Address scope */ 1228*9712c20fSFrederick Mayle CINIT(ADDRESS_SCOPE, LONG, 171), 1229*9712c20fSFrederick Mayle 1230*9712c20fSFrederick Mayle /* Collect certificate chain info and allow it to get retrievable with 1231*9712c20fSFrederick Mayle CURLINFO_CERTINFO after the transfer is complete. (Unfortunately) only 1232*9712c20fSFrederick Mayle working with OpenSSL-powered builds. */ 1233*9712c20fSFrederick Mayle CINIT(CERTINFO, LONG, 172), 1234*9712c20fSFrederick Mayle 1235*9712c20fSFrederick Mayle /* "name" and "pwd" to use when fetching. */ 1236*9712c20fSFrederick Mayle CINIT(USERNAME, OBJECTPOINT, 173), 1237*9712c20fSFrederick Mayle CINIT(PASSWORD, OBJECTPOINT, 174), 1238*9712c20fSFrederick Mayle 1239*9712c20fSFrederick Mayle /* "name" and "pwd" to use with Proxy when fetching. */ 1240*9712c20fSFrederick Mayle CINIT(PROXYUSERNAME, OBJECTPOINT, 175), 1241*9712c20fSFrederick Mayle CINIT(PROXYPASSWORD, OBJECTPOINT, 176), 1242*9712c20fSFrederick Mayle 1243*9712c20fSFrederick Mayle /* Comma separated list of hostnames defining no-proxy zones. These should 1244*9712c20fSFrederick Mayle match both hostnames directly, and hostnames within a domain. For 1245*9712c20fSFrederick Mayle example, local.com will match local.com and www.local.com, but NOT 1246*9712c20fSFrederick Mayle notlocal.com or www.notlocal.com. For compatibility with other 1247*9712c20fSFrederick Mayle implementations of this, .local.com will be considered to be the same as 1248*9712c20fSFrederick Mayle local.com. A single * is the only valid wildcard, and effectively 1249*9712c20fSFrederick Mayle disables the use of proxy. */ 1250*9712c20fSFrederick Mayle CINIT(NOPROXY, OBJECTPOINT, 177), 1251*9712c20fSFrederick Mayle 1252*9712c20fSFrederick Mayle /* block size for TFTP transfers */ 1253*9712c20fSFrederick Mayle CINIT(TFTP_BLKSIZE, LONG, 178), 1254*9712c20fSFrederick Mayle 1255*9712c20fSFrederick Mayle /* Socks Service */ 1256*9712c20fSFrederick Mayle CINIT(SOCKS5_GSSAPI_SERVICE, OBJECTPOINT, 179), 1257*9712c20fSFrederick Mayle 1258*9712c20fSFrederick Mayle /* Socks Service */ 1259*9712c20fSFrederick Mayle CINIT(SOCKS5_GSSAPI_NEC, LONG, 180), 1260*9712c20fSFrederick Mayle 1261*9712c20fSFrederick Mayle /* set the bitmask for the protocols that are allowed to be used for the 1262*9712c20fSFrederick Mayle transfer, which thus helps the app which takes URLs from users or other 1263*9712c20fSFrederick Mayle external inputs and want to restrict what protocol(s) to deal 1264*9712c20fSFrederick Mayle with. Defaults to CURLPROTO_ALL. */ 1265*9712c20fSFrederick Mayle CINIT(PROTOCOLS, LONG, 181), 1266*9712c20fSFrederick Mayle 1267*9712c20fSFrederick Mayle /* set the bitmask for the protocols that libcurl is allowed to follow to, 1268*9712c20fSFrederick Mayle as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs 1269*9712c20fSFrederick Mayle to be set in both bitmasks to be allowed to get redirected to. Defaults 1270*9712c20fSFrederick Mayle to all protocols except FILE and SCP. */ 1271*9712c20fSFrederick Mayle CINIT(REDIR_PROTOCOLS, LONG, 182), 1272*9712c20fSFrederick Mayle 1273*9712c20fSFrederick Mayle /* set the SSH knownhost file name to use */ 1274*9712c20fSFrederick Mayle CINIT(SSH_KNOWNHOSTS, OBJECTPOINT, 183), 1275*9712c20fSFrederick Mayle 1276*9712c20fSFrederick Mayle /* set the SSH host key callback, must point to a curl_sshkeycallback 1277*9712c20fSFrederick Mayle function */ 1278*9712c20fSFrederick Mayle CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184), 1279*9712c20fSFrederick Mayle 1280*9712c20fSFrederick Mayle /* set the SSH host key callback custom pointer */ 1281*9712c20fSFrederick Mayle CINIT(SSH_KEYDATA, OBJECTPOINT, 185), 1282*9712c20fSFrederick Mayle 1283*9712c20fSFrederick Mayle CURLOPT_LASTENTRY /* the last unused */ 1284*9712c20fSFrederick Mayle } CURLoption; 1285*9712c20fSFrederick Mayle 1286*9712c20fSFrederick Mayle #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all 1287*9712c20fSFrederick Mayle the obsolete stuff removed! */ 1288*9712c20fSFrederick Mayle 1289*9712c20fSFrederick Mayle /* Backwards compatibility with older names */ 1290*9712c20fSFrederick Mayle /* These are scheduled to disappear by 2011 */ 1291*9712c20fSFrederick Mayle 1292*9712c20fSFrederick Mayle /* This was added in version 7.19.1 */ 1293*9712c20fSFrederick Mayle #define CURLOPT_POST301 CURLOPT_POSTREDIR 1294*9712c20fSFrederick Mayle 1295*9712c20fSFrederick Mayle /* These are scheduled to disappear by 2009 */ 1296*9712c20fSFrederick Mayle 1297*9712c20fSFrederick Mayle /* The following were added in 7.17.0 */ 1298*9712c20fSFrederick Mayle #define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD 1299*9712c20fSFrederick Mayle #define CURLOPT_FTPAPPEND CURLOPT_APPEND 1300*9712c20fSFrederick Mayle #define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY 1301*9712c20fSFrederick Mayle #define CURLOPT_FTP_SSL CURLOPT_USE_SSL 1302*9712c20fSFrederick Mayle 1303*9712c20fSFrederick Mayle /* The following were added earlier */ 1304*9712c20fSFrederick Mayle 1305*9712c20fSFrederick Mayle #define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD 1306*9712c20fSFrederick Mayle #define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL 1307*9712c20fSFrederick Mayle 1308*9712c20fSFrederick Mayle #else 1309*9712c20fSFrederick Mayle /* This is set if CURL_NO_OLDIES is defined at compile-time */ 1310*9712c20fSFrederick Mayle #undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */ 1311*9712c20fSFrederick Mayle #endif 1312*9712c20fSFrederick Mayle 1313*9712c20fSFrederick Mayle 1314*9712c20fSFrederick Mayle /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host 1315*9712c20fSFrederick Mayle name resolves addresses using more than one IP protocol version, this 1316*9712c20fSFrederick Mayle option might be handy to force libcurl to use a specific IP version. */ 1317*9712c20fSFrederick Mayle #define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP 1318*9712c20fSFrederick Mayle versions that your system allows */ 1319*9712c20fSFrederick Mayle #define CURL_IPRESOLVE_V4 1 /* resolve to ipv4 addresses */ 1320*9712c20fSFrederick Mayle #define CURL_IPRESOLVE_V6 2 /* resolve to ipv6 addresses */ 1321*9712c20fSFrederick Mayle 1322*9712c20fSFrederick Mayle /* three convenient "aliases" that follow the name scheme better */ 1323*9712c20fSFrederick Mayle #define CURLOPT_WRITEDATA CURLOPT_FILE 1324*9712c20fSFrederick Mayle #define CURLOPT_READDATA CURLOPT_INFILE 1325*9712c20fSFrederick Mayle #define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER 1326*9712c20fSFrederick Mayle 1327*9712c20fSFrederick Mayle /* These enums are for use with the CURLOPT_HTTP_VERSION option. */ 1328*9712c20fSFrederick Mayle enum { 1329*9712c20fSFrederick Mayle CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd 1330*9712c20fSFrederick Mayle like the library to choose the best possible 1331*9712c20fSFrederick Mayle for us! */ 1332*9712c20fSFrederick Mayle CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */ 1333*9712c20fSFrederick Mayle CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */ 1334*9712c20fSFrederick Mayle 1335*9712c20fSFrederick Mayle CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */ 1336*9712c20fSFrederick Mayle }; 1337*9712c20fSFrederick Mayle 1338*9712c20fSFrederick Mayle /* These enums are for use with the CURLOPT_NETRC option. */ 1339*9712c20fSFrederick Mayle enum CURL_NETRC_OPTION { 1340*9712c20fSFrederick Mayle CURL_NETRC_IGNORED, /* The .netrc will never be read. 1341*9712c20fSFrederick Mayle * This is the default. */ 1342*9712c20fSFrederick Mayle CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred 1343*9712c20fSFrederick Mayle * to one in the .netrc. */ 1344*9712c20fSFrederick Mayle CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored. 1345*9712c20fSFrederick Mayle * Unless one is set programmatically, the .netrc 1346*9712c20fSFrederick Mayle * will be queried. */ 1347*9712c20fSFrederick Mayle CURL_NETRC_LAST 1348*9712c20fSFrederick Mayle }; 1349*9712c20fSFrederick Mayle 1350*9712c20fSFrederick Mayle enum { 1351*9712c20fSFrederick Mayle CURL_SSLVERSION_DEFAULT, 1352*9712c20fSFrederick Mayle CURL_SSLVERSION_TLSv1, 1353*9712c20fSFrederick Mayle CURL_SSLVERSION_SSLv2, 1354*9712c20fSFrederick Mayle CURL_SSLVERSION_SSLv3, 1355*9712c20fSFrederick Mayle 1356*9712c20fSFrederick Mayle CURL_SSLVERSION_LAST /* never use, keep last */ 1357*9712c20fSFrederick Mayle }; 1358*9712c20fSFrederick Mayle 1359*9712c20fSFrederick Mayle /* symbols to use with CURLOPT_POSTREDIR. 1360*9712c20fSFrederick Mayle CURL_REDIR_POST_301 and CURL_REDIR_POST_302 can be bitwise ORed so that 1361*9712c20fSFrederick Mayle CURL_REDIR_POST_301 | CURL_REDIR_POST_302 == CURL_REDIR_POST_ALL */ 1362*9712c20fSFrederick Mayle 1363*9712c20fSFrederick Mayle #define CURL_REDIR_GET_ALL 0 1364*9712c20fSFrederick Mayle #define CURL_REDIR_POST_301 1 1365*9712c20fSFrederick Mayle #define CURL_REDIR_POST_302 2 1366*9712c20fSFrederick Mayle #define CURL_REDIR_POST_ALL (CURL_REDIR_POST_301|CURL_REDIR_POST_302) 1367*9712c20fSFrederick Mayle 1368*9712c20fSFrederick Mayle typedef enum { 1369*9712c20fSFrederick Mayle CURL_TIMECOND_NONE, 1370*9712c20fSFrederick Mayle 1371*9712c20fSFrederick Mayle CURL_TIMECOND_IFMODSINCE, 1372*9712c20fSFrederick Mayle CURL_TIMECOND_IFUNMODSINCE, 1373*9712c20fSFrederick Mayle CURL_TIMECOND_LASTMOD, 1374*9712c20fSFrederick Mayle 1375*9712c20fSFrederick Mayle CURL_TIMECOND_LAST 1376*9712c20fSFrederick Mayle } curl_TimeCond; 1377*9712c20fSFrederick Mayle 1378*9712c20fSFrederick Mayle 1379*9712c20fSFrederick Mayle /* curl_strequal() and curl_strnequal() are subject for removal in a future 1380*9712c20fSFrederick Mayle libcurl, see lib/README.curlx for details */ 1381*9712c20fSFrederick Mayle CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2); 1382*9712c20fSFrederick Mayle CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n); 1383*9712c20fSFrederick Mayle 1384*9712c20fSFrederick Mayle /* name is uppercase CURLFORM_<name> */ 1385*9712c20fSFrederick Mayle #ifdef CFINIT 1386*9712c20fSFrederick Mayle #undef CFINIT 1387*9712c20fSFrederick Mayle #endif 1388*9712c20fSFrederick Mayle 1389*9712c20fSFrederick Mayle #ifdef CURL_ISOCPP 1390*9712c20fSFrederick Mayle #define CFINIT(name) CURLFORM_ ## name 1391*9712c20fSFrederick Mayle #else 1392*9712c20fSFrederick Mayle /* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ 1393*9712c20fSFrederick Mayle #define CFINIT(name) CURLFORM_/**/name 1394*9712c20fSFrederick Mayle #endif 1395*9712c20fSFrederick Mayle 1396*9712c20fSFrederick Mayle typedef enum { 1397*9712c20fSFrederick Mayle CFINIT(NOTHING), /********* the first one is unused ************/ 1398*9712c20fSFrederick Mayle 1399*9712c20fSFrederick Mayle /* */ 1400*9712c20fSFrederick Mayle CFINIT(COPYNAME), 1401*9712c20fSFrederick Mayle CFINIT(PTRNAME), 1402*9712c20fSFrederick Mayle CFINIT(NAMELENGTH), 1403*9712c20fSFrederick Mayle CFINIT(COPYCONTENTS), 1404*9712c20fSFrederick Mayle CFINIT(PTRCONTENTS), 1405*9712c20fSFrederick Mayle CFINIT(CONTENTSLENGTH), 1406*9712c20fSFrederick Mayle CFINIT(FILECONTENT), 1407*9712c20fSFrederick Mayle CFINIT(ARRAY), 1408*9712c20fSFrederick Mayle CFINIT(OBSOLETE), 1409*9712c20fSFrederick Mayle CFINIT(FILE), 1410*9712c20fSFrederick Mayle 1411*9712c20fSFrederick Mayle CFINIT(BUFFER), 1412*9712c20fSFrederick Mayle CFINIT(BUFFERPTR), 1413*9712c20fSFrederick Mayle CFINIT(BUFFERLENGTH), 1414*9712c20fSFrederick Mayle 1415*9712c20fSFrederick Mayle CFINIT(CONTENTTYPE), 1416*9712c20fSFrederick Mayle CFINIT(CONTENTHEADER), 1417*9712c20fSFrederick Mayle CFINIT(FILENAME), 1418*9712c20fSFrederick Mayle CFINIT(END), 1419*9712c20fSFrederick Mayle CFINIT(OBSOLETE2), 1420*9712c20fSFrederick Mayle 1421*9712c20fSFrederick Mayle CFINIT(STREAM), 1422*9712c20fSFrederick Mayle 1423*9712c20fSFrederick Mayle CURLFORM_LASTENTRY /* the last unused */ 1424*9712c20fSFrederick Mayle } CURLformoption; 1425*9712c20fSFrederick Mayle 1426*9712c20fSFrederick Mayle #undef CFINIT /* done */ 1427*9712c20fSFrederick Mayle 1428*9712c20fSFrederick Mayle /* structure to be used as parameter for CURLFORM_ARRAY */ 1429*9712c20fSFrederick Mayle struct curl_forms { 1430*9712c20fSFrederick Mayle CURLformoption option; 1431*9712c20fSFrederick Mayle const char *value; 1432*9712c20fSFrederick Mayle }; 1433*9712c20fSFrederick Mayle 1434*9712c20fSFrederick Mayle /* use this for multipart formpost building */ 1435*9712c20fSFrederick Mayle /* Returns code for curl_formadd() 1436*9712c20fSFrederick Mayle * 1437*9712c20fSFrederick Mayle * Returns: 1438*9712c20fSFrederick Mayle * CURL_FORMADD_OK on success 1439*9712c20fSFrederick Mayle * CURL_FORMADD_MEMORY if the FormInfo allocation fails 1440*9712c20fSFrederick Mayle * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form 1441*9712c20fSFrederick Mayle * CURL_FORMADD_NULL if a null pointer was given for a char 1442*9712c20fSFrederick Mayle * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed 1443*9712c20fSFrederick Mayle * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used 1444*9712c20fSFrederick Mayle * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error) 1445*9712c20fSFrederick Mayle * CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated 1446*9712c20fSFrederick Mayle * CURL_FORMADD_MEMORY if some allocation for string copying failed. 1447*9712c20fSFrederick Mayle * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array 1448*9712c20fSFrederick Mayle * 1449*9712c20fSFrederick Mayle ***************************************************************************/ 1450*9712c20fSFrederick Mayle typedef enum { 1451*9712c20fSFrederick Mayle CURL_FORMADD_OK, /* first, no error */ 1452*9712c20fSFrederick Mayle 1453*9712c20fSFrederick Mayle CURL_FORMADD_MEMORY, 1454*9712c20fSFrederick Mayle CURL_FORMADD_OPTION_TWICE, 1455*9712c20fSFrederick Mayle CURL_FORMADD_NULL, 1456*9712c20fSFrederick Mayle CURL_FORMADD_UNKNOWN_OPTION, 1457*9712c20fSFrederick Mayle CURL_FORMADD_INCOMPLETE, 1458*9712c20fSFrederick Mayle CURL_FORMADD_ILLEGAL_ARRAY, 1459*9712c20fSFrederick Mayle CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */ 1460*9712c20fSFrederick Mayle 1461*9712c20fSFrederick Mayle CURL_FORMADD_LAST /* last */ 1462*9712c20fSFrederick Mayle } CURLFORMcode; 1463*9712c20fSFrederick Mayle 1464*9712c20fSFrederick Mayle /* 1465*9712c20fSFrederick Mayle * NAME curl_formadd() 1466*9712c20fSFrederick Mayle * 1467*9712c20fSFrederick Mayle * DESCRIPTION 1468*9712c20fSFrederick Mayle * 1469*9712c20fSFrederick Mayle * Pretty advanced function for building multi-part formposts. Each invoke 1470*9712c20fSFrederick Mayle * adds one part that together construct a full post. Then use 1471*9712c20fSFrederick Mayle * CURLOPT_HTTPPOST to send it off to libcurl. 1472*9712c20fSFrederick Mayle */ 1473*9712c20fSFrederick Mayle CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost, 1474*9712c20fSFrederick Mayle struct curl_httppost **last_post, 1475*9712c20fSFrederick Mayle ...); 1476*9712c20fSFrederick Mayle 1477*9712c20fSFrederick Mayle /* 1478*9712c20fSFrederick Mayle * callback function for curl_formget() 1479*9712c20fSFrederick Mayle * The void *arg pointer will be the one passed as second argument to 1480*9712c20fSFrederick Mayle * curl_formget(). 1481*9712c20fSFrederick Mayle * The character buffer passed to it must not be freed. 1482*9712c20fSFrederick Mayle * Should return the buffer length passed to it as the argument "len" on 1483*9712c20fSFrederick Mayle * success. 1484*9712c20fSFrederick Mayle */ 1485*9712c20fSFrederick Mayle typedef size_t (*curl_formget_callback)(void *arg, const char *buf, size_t len); 1486*9712c20fSFrederick Mayle 1487*9712c20fSFrederick Mayle /* 1488*9712c20fSFrederick Mayle * NAME curl_formget() 1489*9712c20fSFrederick Mayle * 1490*9712c20fSFrederick Mayle * DESCRIPTION 1491*9712c20fSFrederick Mayle * 1492*9712c20fSFrederick Mayle * Serialize a curl_httppost struct built with curl_formadd(). 1493*9712c20fSFrederick Mayle * Accepts a void pointer as second argument which will be passed to 1494*9712c20fSFrederick Mayle * the curl_formget_callback function. 1495*9712c20fSFrederick Mayle * Returns 0 on success. 1496*9712c20fSFrederick Mayle */ 1497*9712c20fSFrederick Mayle CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg, 1498*9712c20fSFrederick Mayle curl_formget_callback append); 1499*9712c20fSFrederick Mayle /* 1500*9712c20fSFrederick Mayle * NAME curl_formfree() 1501*9712c20fSFrederick Mayle * 1502*9712c20fSFrederick Mayle * DESCRIPTION 1503*9712c20fSFrederick Mayle * 1504*9712c20fSFrederick Mayle * Free a multipart formpost previously built with curl_formadd(). 1505*9712c20fSFrederick Mayle */ 1506*9712c20fSFrederick Mayle CURL_EXTERN void curl_formfree(struct curl_httppost *form); 1507*9712c20fSFrederick Mayle 1508*9712c20fSFrederick Mayle /* 1509*9712c20fSFrederick Mayle * NAME curl_getenv() 1510*9712c20fSFrederick Mayle * 1511*9712c20fSFrederick Mayle * DESCRIPTION 1512*9712c20fSFrederick Mayle * 1513*9712c20fSFrederick Mayle * Returns a malloc()'ed string that MUST be curl_free()ed after usage is 1514*9712c20fSFrederick Mayle * complete. DEPRECATED - see lib/README.curlx 1515*9712c20fSFrederick Mayle */ 1516*9712c20fSFrederick Mayle CURL_EXTERN char *curl_getenv(const char *variable); 1517*9712c20fSFrederick Mayle 1518*9712c20fSFrederick Mayle /* 1519*9712c20fSFrederick Mayle * NAME curl_version() 1520*9712c20fSFrederick Mayle * 1521*9712c20fSFrederick Mayle * DESCRIPTION 1522*9712c20fSFrederick Mayle * 1523*9712c20fSFrederick Mayle * Returns a static ascii string of the libcurl version. 1524*9712c20fSFrederick Mayle */ 1525*9712c20fSFrederick Mayle CURL_EXTERN char *curl_version(void); 1526*9712c20fSFrederick Mayle 1527*9712c20fSFrederick Mayle /* 1528*9712c20fSFrederick Mayle * NAME curl_easy_escape() 1529*9712c20fSFrederick Mayle * 1530*9712c20fSFrederick Mayle * DESCRIPTION 1531*9712c20fSFrederick Mayle * 1532*9712c20fSFrederick Mayle * Escapes URL strings (converts all letters consider illegal in URLs to their 1533*9712c20fSFrederick Mayle * %XX versions). This function returns a new allocated string or NULL if an 1534*9712c20fSFrederick Mayle * error occurred. 1535*9712c20fSFrederick Mayle */ 1536*9712c20fSFrederick Mayle CURL_EXTERN char *curl_easy_escape(CURL *handle, 1537*9712c20fSFrederick Mayle const char *string, 1538*9712c20fSFrederick Mayle int length); 1539*9712c20fSFrederick Mayle 1540*9712c20fSFrederick Mayle /* the previous version: */ 1541*9712c20fSFrederick Mayle CURL_EXTERN char *curl_escape(const char *string, 1542*9712c20fSFrederick Mayle int length); 1543*9712c20fSFrederick Mayle 1544*9712c20fSFrederick Mayle 1545*9712c20fSFrederick Mayle /* 1546*9712c20fSFrederick Mayle * NAME curl_easy_unescape() 1547*9712c20fSFrederick Mayle * 1548*9712c20fSFrederick Mayle * DESCRIPTION 1549*9712c20fSFrederick Mayle * 1550*9712c20fSFrederick Mayle * Unescapes URL encoding in strings (converts all %XX codes to their 8bit 1551*9712c20fSFrederick Mayle * versions). This function returns a new allocated string or NULL if an error 1552*9712c20fSFrederick Mayle * occurred. 1553*9712c20fSFrederick Mayle * Conversion Note: On non-ASCII platforms the ASCII %XX codes are 1554*9712c20fSFrederick Mayle * converted into the host encoding. 1555*9712c20fSFrederick Mayle */ 1556*9712c20fSFrederick Mayle CURL_EXTERN char *curl_easy_unescape(CURL *handle, 1557*9712c20fSFrederick Mayle const char *string, 1558*9712c20fSFrederick Mayle int length, 1559*9712c20fSFrederick Mayle int *outlength); 1560*9712c20fSFrederick Mayle 1561*9712c20fSFrederick Mayle /* the previous version */ 1562*9712c20fSFrederick Mayle CURL_EXTERN char *curl_unescape(const char *string, 1563*9712c20fSFrederick Mayle int length); 1564*9712c20fSFrederick Mayle 1565*9712c20fSFrederick Mayle /* 1566*9712c20fSFrederick Mayle * NAME curl_free() 1567*9712c20fSFrederick Mayle * 1568*9712c20fSFrederick Mayle * DESCRIPTION 1569*9712c20fSFrederick Mayle * 1570*9712c20fSFrederick Mayle * Provided for de-allocation in the same translation unit that did the 1571*9712c20fSFrederick Mayle * allocation. Added in libcurl 7.10 1572*9712c20fSFrederick Mayle */ 1573*9712c20fSFrederick Mayle CURL_EXTERN void curl_free(void *p); 1574*9712c20fSFrederick Mayle 1575*9712c20fSFrederick Mayle /* 1576*9712c20fSFrederick Mayle * NAME curl_global_init() 1577*9712c20fSFrederick Mayle * 1578*9712c20fSFrederick Mayle * DESCRIPTION 1579*9712c20fSFrederick Mayle * 1580*9712c20fSFrederick Mayle * curl_global_init() should be invoked exactly once for each application that 1581*9712c20fSFrederick Mayle * uses libcurl and before any call of other libcurl functions. 1582*9712c20fSFrederick Mayle * 1583*9712c20fSFrederick Mayle * This function is not thread-safe! 1584*9712c20fSFrederick Mayle */ 1585*9712c20fSFrederick Mayle CURL_EXTERN CURLcode curl_global_init(long flags); 1586*9712c20fSFrederick Mayle 1587*9712c20fSFrederick Mayle /* 1588*9712c20fSFrederick Mayle * NAME curl_global_init_mem() 1589*9712c20fSFrederick Mayle * 1590*9712c20fSFrederick Mayle * DESCRIPTION 1591*9712c20fSFrederick Mayle * 1592*9712c20fSFrederick Mayle * curl_global_init() or curl_global_init_mem() should be invoked exactly once 1593*9712c20fSFrederick Mayle * for each application that uses libcurl. This function can be used to 1594*9712c20fSFrederick Mayle * initialize libcurl and set user defined memory management callback 1595*9712c20fSFrederick Mayle * functions. Users can implement memory management routines to check for 1596*9712c20fSFrederick Mayle * memory leaks, check for mis-use of the curl library etc. User registered 1597*9712c20fSFrederick Mayle * callback routines with be invoked by this library instead of the system 1598*9712c20fSFrederick Mayle * memory management routines like malloc, free etc. 1599*9712c20fSFrederick Mayle */ 1600*9712c20fSFrederick Mayle CURL_EXTERN CURLcode curl_global_init_mem(long flags, 1601*9712c20fSFrederick Mayle curl_malloc_callback m, 1602*9712c20fSFrederick Mayle curl_free_callback f, 1603*9712c20fSFrederick Mayle curl_realloc_callback r, 1604*9712c20fSFrederick Mayle curl_strdup_callback s, 1605*9712c20fSFrederick Mayle curl_calloc_callback c); 1606*9712c20fSFrederick Mayle 1607*9712c20fSFrederick Mayle /* 1608*9712c20fSFrederick Mayle * NAME curl_global_cleanup() 1609*9712c20fSFrederick Mayle * 1610*9712c20fSFrederick Mayle * DESCRIPTION 1611*9712c20fSFrederick Mayle * 1612*9712c20fSFrederick Mayle * curl_global_cleanup() should be invoked exactly once for each application 1613*9712c20fSFrederick Mayle * that uses libcurl 1614*9712c20fSFrederick Mayle */ 1615*9712c20fSFrederick Mayle CURL_EXTERN void curl_global_cleanup(void); 1616*9712c20fSFrederick Mayle 1617*9712c20fSFrederick Mayle /* linked-list structure for the CURLOPT_QUOTE option (and other) */ 1618*9712c20fSFrederick Mayle struct curl_slist { 1619*9712c20fSFrederick Mayle char *data; 1620*9712c20fSFrederick Mayle struct curl_slist *next; 1621*9712c20fSFrederick Mayle }; 1622*9712c20fSFrederick Mayle 1623*9712c20fSFrederick Mayle /* 1624*9712c20fSFrederick Mayle * NAME curl_slist_append() 1625*9712c20fSFrederick Mayle * 1626*9712c20fSFrederick Mayle * DESCRIPTION 1627*9712c20fSFrederick Mayle * 1628*9712c20fSFrederick Mayle * Appends a string to a linked list. If no list exists, it will be created 1629*9712c20fSFrederick Mayle * first. Returns the new list, after appending. 1630*9712c20fSFrederick Mayle */ 1631*9712c20fSFrederick Mayle CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *, 1632*9712c20fSFrederick Mayle const char *); 1633*9712c20fSFrederick Mayle 1634*9712c20fSFrederick Mayle /* 1635*9712c20fSFrederick Mayle * NAME curl_slist_free_all() 1636*9712c20fSFrederick Mayle * 1637*9712c20fSFrederick Mayle * DESCRIPTION 1638*9712c20fSFrederick Mayle * 1639*9712c20fSFrederick Mayle * free a previously built curl_slist. 1640*9712c20fSFrederick Mayle */ 1641*9712c20fSFrederick Mayle CURL_EXTERN void curl_slist_free_all(struct curl_slist *); 1642*9712c20fSFrederick Mayle 1643*9712c20fSFrederick Mayle /* 1644*9712c20fSFrederick Mayle * NAME curl_getdate() 1645*9712c20fSFrederick Mayle * 1646*9712c20fSFrederick Mayle * DESCRIPTION 1647*9712c20fSFrederick Mayle * 1648*9712c20fSFrederick Mayle * Returns the time, in seconds since 1 Jan 1970 of the time string given in 1649*9712c20fSFrederick Mayle * the first argument. The time argument in the second parameter is unused 1650*9712c20fSFrederick Mayle * and should be set to NULL. 1651*9712c20fSFrederick Mayle */ 1652*9712c20fSFrederick Mayle CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused); 1653*9712c20fSFrederick Mayle 1654*9712c20fSFrederick Mayle /* info about the certificate chain, only for OpenSSL builds. Asked 1655*9712c20fSFrederick Mayle for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */ 1656*9712c20fSFrederick Mayle struct curl_certinfo { 1657*9712c20fSFrederick Mayle int num_of_certs; /* number of certificates with information */ 1658*9712c20fSFrederick Mayle struct curl_slist **certinfo; /* for each index in this array, there's a 1659*9712c20fSFrederick Mayle linked list with textual information in the 1660*9712c20fSFrederick Mayle format "name: value" */ 1661*9712c20fSFrederick Mayle }; 1662*9712c20fSFrederick Mayle 1663*9712c20fSFrederick Mayle #define CURLINFO_STRING 0x100000 1664*9712c20fSFrederick Mayle #define CURLINFO_LONG 0x200000 1665*9712c20fSFrederick Mayle #define CURLINFO_DOUBLE 0x300000 1666*9712c20fSFrederick Mayle #define CURLINFO_SLIST 0x400000 1667*9712c20fSFrederick Mayle #define CURLINFO_MASK 0x0fffff 1668*9712c20fSFrederick Mayle #define CURLINFO_TYPEMASK 0xf00000 1669*9712c20fSFrederick Mayle 1670*9712c20fSFrederick Mayle typedef enum { 1671*9712c20fSFrederick Mayle CURLINFO_NONE, /* first, never use this */ 1672*9712c20fSFrederick Mayle CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1, 1673*9712c20fSFrederick Mayle CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2, 1674*9712c20fSFrederick Mayle CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3, 1675*9712c20fSFrederick Mayle CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4, 1676*9712c20fSFrederick Mayle CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5, 1677*9712c20fSFrederick Mayle CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6, 1678*9712c20fSFrederick Mayle CURLINFO_SIZE_UPLOAD = CURLINFO_DOUBLE + 7, 1679*9712c20fSFrederick Mayle CURLINFO_SIZE_DOWNLOAD = CURLINFO_DOUBLE + 8, 1680*9712c20fSFrederick Mayle CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9, 1681*9712c20fSFrederick Mayle CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 10, 1682*9712c20fSFrederick Mayle CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11, 1683*9712c20fSFrederick Mayle CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12, 1684*9712c20fSFrederick Mayle CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13, 1685*9712c20fSFrederick Mayle CURLINFO_FILETIME = CURLINFO_LONG + 14, 1686*9712c20fSFrederick Mayle CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15, 1687*9712c20fSFrederick Mayle CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16, 1688*9712c20fSFrederick Mayle CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17, 1689*9712c20fSFrederick Mayle CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18, 1690*9712c20fSFrederick Mayle CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19, 1691*9712c20fSFrederick Mayle CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20, 1692*9712c20fSFrederick Mayle CURLINFO_PRIVATE = CURLINFO_STRING + 21, 1693*9712c20fSFrederick Mayle CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22, 1694*9712c20fSFrederick Mayle CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23, 1695*9712c20fSFrederick Mayle CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24, 1696*9712c20fSFrederick Mayle CURLINFO_OS_ERRNO = CURLINFO_LONG + 25, 1697*9712c20fSFrederick Mayle CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26, 1698*9712c20fSFrederick Mayle CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27, 1699*9712c20fSFrederick Mayle CURLINFO_COOKIELIST = CURLINFO_SLIST + 28, 1700*9712c20fSFrederick Mayle CURLINFO_LASTSOCKET = CURLINFO_LONG + 29, 1701*9712c20fSFrederick Mayle CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30, 1702*9712c20fSFrederick Mayle CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31, 1703*9712c20fSFrederick Mayle CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32, 1704*9712c20fSFrederick Mayle CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33, 1705*9712c20fSFrederick Mayle CURLINFO_CERTINFO = CURLINFO_SLIST + 34, 1706*9712c20fSFrederick Mayle CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35, 1707*9712c20fSFrederick Mayle /* Fill in new entries below here! */ 1708*9712c20fSFrederick Mayle 1709*9712c20fSFrederick Mayle CURLINFO_LASTONE = 35 1710*9712c20fSFrederick Mayle } CURLINFO; 1711*9712c20fSFrederick Mayle 1712*9712c20fSFrederick Mayle /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as 1713*9712c20fSFrederick Mayle CURLINFO_HTTP_CODE */ 1714*9712c20fSFrederick Mayle #define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE 1715*9712c20fSFrederick Mayle 1716*9712c20fSFrederick Mayle typedef enum { 1717*9712c20fSFrederick Mayle CURLCLOSEPOLICY_NONE, /* first, never use this */ 1718*9712c20fSFrederick Mayle 1719*9712c20fSFrederick Mayle CURLCLOSEPOLICY_OLDEST, 1720*9712c20fSFrederick Mayle CURLCLOSEPOLICY_LEAST_RECENTLY_USED, 1721*9712c20fSFrederick Mayle CURLCLOSEPOLICY_LEAST_TRAFFIC, 1722*9712c20fSFrederick Mayle CURLCLOSEPOLICY_SLOWEST, 1723*9712c20fSFrederick Mayle CURLCLOSEPOLICY_CALLBACK, 1724*9712c20fSFrederick Mayle 1725*9712c20fSFrederick Mayle CURLCLOSEPOLICY_LAST /* last, never use this */ 1726*9712c20fSFrederick Mayle } curl_closepolicy; 1727*9712c20fSFrederick Mayle 1728*9712c20fSFrederick Mayle #define CURL_GLOBAL_SSL (1<<0) 1729*9712c20fSFrederick Mayle #define CURL_GLOBAL_WIN32 (1<<1) 1730*9712c20fSFrederick Mayle #define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32) 1731*9712c20fSFrederick Mayle #define CURL_GLOBAL_NOTHING 0 1732*9712c20fSFrederick Mayle #define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL 1733*9712c20fSFrederick Mayle 1734*9712c20fSFrederick Mayle 1735*9712c20fSFrederick Mayle /***************************************************************************** 1736*9712c20fSFrederick Mayle * Setup defines, protos etc for the sharing stuff. 1737*9712c20fSFrederick Mayle */ 1738*9712c20fSFrederick Mayle 1739*9712c20fSFrederick Mayle /* Different data locks for a single share */ 1740*9712c20fSFrederick Mayle typedef enum { 1741*9712c20fSFrederick Mayle CURL_LOCK_DATA_NONE = 0, 1742*9712c20fSFrederick Mayle /* CURL_LOCK_DATA_SHARE is used internally to say that 1743*9712c20fSFrederick Mayle * the locking is just made to change the internal state of the share 1744*9712c20fSFrederick Mayle * itself. 1745*9712c20fSFrederick Mayle */ 1746*9712c20fSFrederick Mayle CURL_LOCK_DATA_SHARE, 1747*9712c20fSFrederick Mayle CURL_LOCK_DATA_COOKIE, 1748*9712c20fSFrederick Mayle CURL_LOCK_DATA_DNS, 1749*9712c20fSFrederick Mayle CURL_LOCK_DATA_SSL_SESSION, 1750*9712c20fSFrederick Mayle CURL_LOCK_DATA_CONNECT, 1751*9712c20fSFrederick Mayle CURL_LOCK_DATA_LAST 1752*9712c20fSFrederick Mayle } curl_lock_data; 1753*9712c20fSFrederick Mayle 1754*9712c20fSFrederick Mayle /* Different lock access types */ 1755*9712c20fSFrederick Mayle typedef enum { 1756*9712c20fSFrederick Mayle CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */ 1757*9712c20fSFrederick Mayle CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */ 1758*9712c20fSFrederick Mayle CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */ 1759*9712c20fSFrederick Mayle CURL_LOCK_ACCESS_LAST /* never use */ 1760*9712c20fSFrederick Mayle } curl_lock_access; 1761*9712c20fSFrederick Mayle 1762*9712c20fSFrederick Mayle typedef void (*curl_lock_function)(CURL *handle, 1763*9712c20fSFrederick Mayle curl_lock_data data, 1764*9712c20fSFrederick Mayle curl_lock_access locktype, 1765*9712c20fSFrederick Mayle void *userptr); 1766*9712c20fSFrederick Mayle typedef void (*curl_unlock_function)(CURL *handle, 1767*9712c20fSFrederick Mayle curl_lock_data data, 1768*9712c20fSFrederick Mayle void *userptr); 1769*9712c20fSFrederick Mayle 1770*9712c20fSFrederick Mayle typedef void CURLSH; 1771*9712c20fSFrederick Mayle 1772*9712c20fSFrederick Mayle typedef enum { 1773*9712c20fSFrederick Mayle CURLSHE_OK, /* all is fine */ 1774*9712c20fSFrederick Mayle CURLSHE_BAD_OPTION, /* 1 */ 1775*9712c20fSFrederick Mayle CURLSHE_IN_USE, /* 2 */ 1776*9712c20fSFrederick Mayle CURLSHE_INVALID, /* 3 */ 1777*9712c20fSFrederick Mayle CURLSHE_NOMEM, /* out of memory */ 1778*9712c20fSFrederick Mayle CURLSHE_LAST /* never use */ 1779*9712c20fSFrederick Mayle } CURLSHcode; 1780*9712c20fSFrederick Mayle 1781*9712c20fSFrederick Mayle typedef enum { 1782*9712c20fSFrederick Mayle CURLSHOPT_NONE, /* don't use */ 1783*9712c20fSFrederick Mayle CURLSHOPT_SHARE, /* specify a data type to share */ 1784*9712c20fSFrederick Mayle CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */ 1785*9712c20fSFrederick Mayle CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */ 1786*9712c20fSFrederick Mayle CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */ 1787*9712c20fSFrederick Mayle CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock 1788*9712c20fSFrederick Mayle callback functions */ 1789*9712c20fSFrederick Mayle CURLSHOPT_LAST /* never use */ 1790*9712c20fSFrederick Mayle } CURLSHoption; 1791*9712c20fSFrederick Mayle 1792*9712c20fSFrederick Mayle CURL_EXTERN CURLSH *curl_share_init(void); 1793*9712c20fSFrederick Mayle CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...); 1794*9712c20fSFrederick Mayle CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *); 1795*9712c20fSFrederick Mayle 1796*9712c20fSFrederick Mayle /**************************************************************************** 1797*9712c20fSFrederick Mayle * Structures for querying information about the curl library at runtime. 1798*9712c20fSFrederick Mayle */ 1799*9712c20fSFrederick Mayle 1800*9712c20fSFrederick Mayle typedef enum { 1801*9712c20fSFrederick Mayle CURLVERSION_FIRST, 1802*9712c20fSFrederick Mayle CURLVERSION_SECOND, 1803*9712c20fSFrederick Mayle CURLVERSION_THIRD, 1804*9712c20fSFrederick Mayle CURLVERSION_FOURTH, 1805*9712c20fSFrederick Mayle CURLVERSION_LAST /* never actually use this */ 1806*9712c20fSFrederick Mayle } CURLversion; 1807*9712c20fSFrederick Mayle 1808*9712c20fSFrederick Mayle /* The 'CURLVERSION_NOW' is the symbolic name meant to be used by 1809*9712c20fSFrederick Mayle basically all programs ever that want to get version information. It is 1810*9712c20fSFrederick Mayle meant to be a built-in version number for what kind of struct the caller 1811*9712c20fSFrederick Mayle expects. If the struct ever changes, we redefine the NOW to another enum 1812*9712c20fSFrederick Mayle from above. */ 1813*9712c20fSFrederick Mayle #define CURLVERSION_NOW CURLVERSION_FOURTH 1814*9712c20fSFrederick Mayle 1815*9712c20fSFrederick Mayle typedef struct { 1816*9712c20fSFrederick Mayle CURLversion age; /* age of the returned struct */ 1817*9712c20fSFrederick Mayle const char *version; /* LIBCURL_VERSION */ 1818*9712c20fSFrederick Mayle unsigned int version_num; /* LIBCURL_VERSION_NUM */ 1819*9712c20fSFrederick Mayle const char *host; /* OS/host/cpu/machine when configured */ 1820*9712c20fSFrederick Mayle int features; /* bitmask, see defines below */ 1821*9712c20fSFrederick Mayle const char *ssl_version; /* human readable string */ 1822*9712c20fSFrederick Mayle long ssl_version_num; /* not used anymore, always 0 */ 1823*9712c20fSFrederick Mayle const char *libz_version; /* human readable string */ 1824*9712c20fSFrederick Mayle /* protocols is terminated by an entry with a NULL protoname */ 1825*9712c20fSFrederick Mayle const char * const *protocols; 1826*9712c20fSFrederick Mayle 1827*9712c20fSFrederick Mayle /* The fields below this were added in CURLVERSION_SECOND */ 1828*9712c20fSFrederick Mayle const char *ares; 1829*9712c20fSFrederick Mayle int ares_num; 1830*9712c20fSFrederick Mayle 1831*9712c20fSFrederick Mayle /* This field was added in CURLVERSION_THIRD */ 1832*9712c20fSFrederick Mayle const char *libidn; 1833*9712c20fSFrederick Mayle 1834*9712c20fSFrederick Mayle /* These field were added in CURLVERSION_FOURTH */ 1835*9712c20fSFrederick Mayle 1836*9712c20fSFrederick Mayle /* Same as '_libiconv_version' if built with HAVE_ICONV */ 1837*9712c20fSFrederick Mayle int iconv_ver_num; 1838*9712c20fSFrederick Mayle 1839*9712c20fSFrederick Mayle const char *libssh_version; /* human readable string */ 1840*9712c20fSFrederick Mayle 1841*9712c20fSFrederick Mayle } curl_version_info_data; 1842*9712c20fSFrederick Mayle 1843*9712c20fSFrederick Mayle #define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */ 1844*9712c20fSFrederick Mayle #define CURL_VERSION_KERBEROS4 (1<<1) /* kerberos auth is supported */ 1845*9712c20fSFrederick Mayle #define CURL_VERSION_SSL (1<<2) /* SSL options are present */ 1846*9712c20fSFrederick Mayle #define CURL_VERSION_LIBZ (1<<3) /* libz features are present */ 1847*9712c20fSFrederick Mayle #define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */ 1848*9712c20fSFrederick Mayle #define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth support */ 1849*9712c20fSFrederick Mayle #define CURL_VERSION_DEBUG (1<<6) /* built with debug capabilities */ 1850*9712c20fSFrederick Mayle #define CURL_VERSION_ASYNCHDNS (1<<7) /* asynchronous dns resolves */ 1851*9712c20fSFrederick Mayle #define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth */ 1852*9712c20fSFrederick Mayle #define CURL_VERSION_LARGEFILE (1<<9) /* supports files bigger than 2GB */ 1853*9712c20fSFrederick Mayle #define CURL_VERSION_IDN (1<<10) /* International Domain Names support */ 1854*9712c20fSFrederick Mayle #define CURL_VERSION_SSPI (1<<11) /* SSPI is supported */ 1855*9712c20fSFrederick Mayle #define CURL_VERSION_CONV (1<<12) /* character conversions supported */ 1856*9712c20fSFrederick Mayle #define CURL_VERSION_CURLDEBUG (1<<13) /* debug memory tracking supported */ 1857*9712c20fSFrederick Mayle 1858*9712c20fSFrederick Mayle /* 1859*9712c20fSFrederick Mayle * NAME curl_version_info() 1860*9712c20fSFrederick Mayle * 1861*9712c20fSFrederick Mayle * DESCRIPTION 1862*9712c20fSFrederick Mayle * 1863*9712c20fSFrederick Mayle * This function returns a pointer to a static copy of the version info 1864*9712c20fSFrederick Mayle * struct. See above. 1865*9712c20fSFrederick Mayle */ 1866*9712c20fSFrederick Mayle CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion); 1867*9712c20fSFrederick Mayle 1868*9712c20fSFrederick Mayle /* 1869*9712c20fSFrederick Mayle * NAME curl_easy_strerror() 1870*9712c20fSFrederick Mayle * 1871*9712c20fSFrederick Mayle * DESCRIPTION 1872*9712c20fSFrederick Mayle * 1873*9712c20fSFrederick Mayle * The curl_easy_strerror function may be used to turn a CURLcode value 1874*9712c20fSFrederick Mayle * into the equivalent human readable error string. This is useful 1875*9712c20fSFrederick Mayle * for printing meaningful error messages. 1876*9712c20fSFrederick Mayle */ 1877*9712c20fSFrederick Mayle CURL_EXTERN const char *curl_easy_strerror(CURLcode); 1878*9712c20fSFrederick Mayle 1879*9712c20fSFrederick Mayle /* 1880*9712c20fSFrederick Mayle * NAME curl_share_strerror() 1881*9712c20fSFrederick Mayle * 1882*9712c20fSFrederick Mayle * DESCRIPTION 1883*9712c20fSFrederick Mayle * 1884*9712c20fSFrederick Mayle * The curl_share_strerror function may be used to turn a CURLSHcode value 1885*9712c20fSFrederick Mayle * into the equivalent human readable error string. This is useful 1886*9712c20fSFrederick Mayle * for printing meaningful error messages. 1887*9712c20fSFrederick Mayle */ 1888*9712c20fSFrederick Mayle CURL_EXTERN const char *curl_share_strerror(CURLSHcode); 1889*9712c20fSFrederick Mayle 1890*9712c20fSFrederick Mayle /* 1891*9712c20fSFrederick Mayle * NAME curl_easy_pause() 1892*9712c20fSFrederick Mayle * 1893*9712c20fSFrederick Mayle * DESCRIPTION 1894*9712c20fSFrederick Mayle * 1895*9712c20fSFrederick Mayle * The curl_easy_pause function pauses or unpauses transfers. Select the new 1896*9712c20fSFrederick Mayle * state by setting the bitmask, use the convenience defines below. 1897*9712c20fSFrederick Mayle * 1898*9712c20fSFrederick Mayle */ 1899*9712c20fSFrederick Mayle CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask); 1900*9712c20fSFrederick Mayle 1901*9712c20fSFrederick Mayle #define CURLPAUSE_RECV (1<<0) 1902*9712c20fSFrederick Mayle #define CURLPAUSE_RECV_CONT (0) 1903*9712c20fSFrederick Mayle 1904*9712c20fSFrederick Mayle #define CURLPAUSE_SEND (1<<2) 1905*9712c20fSFrederick Mayle #define CURLPAUSE_SEND_CONT (0) 1906*9712c20fSFrederick Mayle 1907*9712c20fSFrederick Mayle #define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND) 1908*9712c20fSFrederick Mayle #define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT) 1909*9712c20fSFrederick Mayle 1910*9712c20fSFrederick Mayle #ifdef __cplusplus 1911*9712c20fSFrederick Mayle } 1912*9712c20fSFrederick Mayle #endif 1913*9712c20fSFrederick Mayle 1914*9712c20fSFrederick Mayle /* unfortunately, the easy.h and multi.h include files need options and info 1915*9712c20fSFrederick Mayle stuff before they can be included! */ 1916*9712c20fSFrederick Mayle #include "easy.h" /* nothing in curl is fun without the easy stuff */ 1917*9712c20fSFrederick Mayle #include "multi.h" 1918*9712c20fSFrederick Mayle 1919*9712c20fSFrederick Mayle /* the typechecker doesn't work in C++ (yet) */ 1920*9712c20fSFrederick Mayle #if defined(__GNUC__) && defined(__GNUC_MINOR__) && \ 1921*9712c20fSFrederick Mayle ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \ 1922*9712c20fSFrederick Mayle !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK) 1923*9712c20fSFrederick Mayle #include "typecheck-gcc.h" 1924*9712c20fSFrederick Mayle #else 1925*9712c20fSFrederick Mayle #if defined(__STDC__) && (__STDC__ >= 1) 1926*9712c20fSFrederick Mayle /* This preprocessor magic that replaces a call with the exact same call is 1927*9712c20fSFrederick Mayle only done to make sure application authors pass exactly three arguments 1928*9712c20fSFrederick Mayle to these functions. */ 1929*9712c20fSFrederick Mayle #define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param) 1930*9712c20fSFrederick Mayle #define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg) 1931*9712c20fSFrederick Mayle #define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param) 1932*9712c20fSFrederick Mayle #define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param) 1933*9712c20fSFrederick Mayle #endif /* __STDC__ >= 1 */ 1934*9712c20fSFrederick Mayle #endif /* gcc >= 4.3 && !__cplusplus */ 1935*9712c20fSFrederick Mayle 1936*9712c20fSFrederick Mayle #endif /* __CURL_CURL_H */ 1937