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