⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curl.h

📁 功能最强大的网络爬虫,希望大家好好学习啊,好好研究啊
💻 H
📖 第 1 页 / 共 4 页
字号:
#ifndef __CURL_CURL_H#define __CURL_CURL_H/*************************************************************************** *                                  _   _ ____  _ *  Project                     ___| | | |  _ \| | *                             / __| | | | |_) | | *                            | (__| |_| |  _ <| |___ *                             \___|\___/|_| \_\_____| * * Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://curl.haxx.se/docs/copyright.html. * * You may opt to use, copy, modify, merge, publish, distribute and/or sell * copies of the Software, and permit persons to whom the Software is * furnished to do so, under the terms of the COPYING file. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * * $Id: curl.h,v 1.304 2006-08-04 16:08:41 giva Exp $ ***************************************************************************//* If you have problems, all libcurl docs and details are found here:   http://curl.haxx.se/libcurl/*/#include "curlver.h" /* the libcurl version defines */#include <stdio.h>#include <limits.h>/* The include stuff here below is mainly for time_t! */#ifdef vms# include <types.h># include <time.h>#else# include <sys/types.h># include <time.h>#endif /* defined (vms) */typedef void CURL;#ifdef  __cplusplusextern "C" {#endif/* * Decorate exportable functions for Win32 DLL linking. * This avoids using a .def file for building libcurl.dll. */#if (defined(WIN32) || defined(_WIN32)) && !defined(CURL_STATICLIB)#if defined(BUILDING_LIBCURL)#define CURL_EXTERN  __declspec(dllexport)#else#define CURL_EXTERN  __declspec(dllimport)#endif#else#ifdef CURL_HIDDEN_SYMBOLS/* * This definition is used to make external definitions visibile in the * shared library when symbols are hidden by default.  It makes no * difference when compiling applications whether this is set or not, * only when compiling the library. */#define CURL_EXTERN CURL_EXTERN_SYMBOL#else#define CURL_EXTERN#endif#endif/* * We want the typedef curl_off_t setup for large file support on all * platforms. We also provide a CURL_FORMAT_OFF_T define to use in *printf * format strings when outputting a variable of type curl_off_t. * * Note: "pocc -Ze" is MSVC compatibily mode and this sets _MSC_VER! */#if (defined(_MSC_VER) && !defined(__POCC__)) || (defined(__LCC__) && defined(WIN32))/* MSVC */#ifdef _WIN32_WCE  typedef long curl_off_t;#define CURL_FORMAT_OFF_T "%ld"#else  typedef signed __int64 curl_off_t;#define CURL_FORMAT_OFF_T "%I64d"#endif#else /* (_MSC_VER && !__POCC__) || (__LCC__ && WIN32) */#if (defined(__GNUC__) && defined(WIN32)) || defined(__WATCOMC__)/* gcc on windows or Watcom */  typedef long long curl_off_t;#define CURL_FORMAT_OFF_T "%I64d"#else /* GCC or Watcom on Windows  *//* "normal" POSIX approach, do note that this does not necessarily mean that   the type is >32 bits, see the SIZEOF_CURL_OFF_T define for that! */  typedef off_t curl_off_t;/* Check a range of defines to detect large file support. On Linux it seems   none of these are set by default, so if you don't explicitly switches on   large file support, this define will be made for "small file" support. */#ifndef _FILE_OFFSET_BITS#define _FILE_OFFSET_BITS 0 /* to prevent warnings in the check below */#define UNDEF_FILE_OFFSET_BITS#endif#ifndef FILESIZEBITS#define FILESIZEBITS 0 /* to prevent warnings in the check below */#define UNDEF_FILESIZEBITS#endif#if defined(_LARGE_FILES) || (_FILE_OFFSET_BITS > 32) || (FILESIZEBITS > 32) \   || defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE)  /* For now, we assume at least one of these to be set for large files to     work! */#define CURL_FORMAT_OFF_T "%lld"#else /* LARGE_FILE support */#define CURL_FORMAT_OFF_T "%ld"#endif#endif /* GCC or Watcom on Windows */#endif /* (_MSC_VER && !__POCC__) || (__LCC__ && WIN32) */#ifdef UNDEF_FILE_OFFSET_BITS/* this was defined above for our checks, undefine it again */#undef _FILE_OFFSET_BITS#endif#ifdef UNDEF_FILESIZEBITS/* this was defined above for our checks, undefine it again */#undef FILESIZEBITS#endifstruct curl_httppost {  struct curl_httppost *next;       /* next entry in the list */  char *name;                       /* pointer to allocated name */  long namelength;                  /* length of name length */  char *contents;                   /* pointer to allocated data contents */  long contentslength;              /* length of contents field */  char *buffer;                     /* pointer to allocated buffer contents */  long bufferlength;                /* length of buffer field */  char *contenttype;                /* Content-Type */  struct curl_slist* contentheader; /* list of extra headers for this form */  struct curl_httppost *more;       /* if one field name has more than one                                       file, this link should link to following                                       files */  long flags;                       /* as defined below */#define HTTPPOST_FILENAME (1<<0)    /* specified content is a file name */#define HTTPPOST_READFILE (1<<1)    /* specified content is a file name */#define HTTPPOST_PTRNAME (1<<2)     /* name is only stored pointer                                       do not free in formfree */#define HTTPPOST_PTRCONTENTS (1<<3) /* contents is only stored pointer                                       do not free in formfree */#define HTTPPOST_BUFFER (1<<4)      /* upload file from buffer */#define HTTPPOST_PTRBUFFER (1<<5)   /* upload file from pointer contents */  char *showfilename;               /* The file name to show. If not set, the                                       actual file name will be used (if this                                       is a file part) */};typedef int (*curl_progress_callback)(void *clientp,                                      double dltotal,                                      double dlnow,                                      double ultotal,                                      double ulnow);  /* Tests have proven that 20K is a very bad buffer size for uploads on     Windows, while 16K for some odd reason performed a lot better. */#define CURL_MAX_WRITE_SIZE 16384typedef size_t (*curl_write_callback)(char *buffer,                                      size_t size,                                      size_t nitems,                                      void *outstream);/* This is a return code for the read callback that, when returned, will   signal libcurl to immediately abort the current transfer. */#define CURL_READFUNC_ABORT 0x10000000typedef size_t (*curl_read_callback)(char *buffer,                                      size_t size,                                      size_t nitems,                                      void *instream);#ifndef CURL_NO_OLDIES  /* not used since 7.10.8, will be removed in a future release */typedef int (*curl_passwd_callback)(void *clientp,                                    const char *prompt,                                    char *buffer,                                    int buflen);#endiftypedef enum {  CURLIOE_OK,            /* I/O operation successful */  CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */  CURLIOE_FAILRESTART,   /* failed to restart the read */  CURLIOE_LAST           /* never use */} curlioerr;typedef enum  {  CURLIOCMD_NOP,         /* no operation */  CURLIOCMD_RESTARTREAD, /* restart the read stream from start */  CURLIOCMD_LAST         /* never use */} curliocmd;typedef curlioerr (*curl_ioctl_callback)(CURL *handle,                                         int cmd,                                         void *clientp);/* * The following typedef's are signatures of malloc, free, realloc, strdup and * calloc respectively.  Function pointers of these types can be passed to the * curl_global_init_mem() function to set user defined memory management * callback routines. */typedef void *(*curl_malloc_callback)(size_t size);typedef void (*curl_free_callback)(void *ptr);typedef void *(*curl_realloc_callback)(void *ptr, size_t size);typedef char *(*curl_strdup_callback)(const char *str);typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);/* the kind of data that is passed to information_callback*/typedef enum {  CURLINFO_TEXT = 0,  CURLINFO_HEADER_IN,    /* 1 */  CURLINFO_HEADER_OUT,   /* 2 */  CURLINFO_DATA_IN,      /* 3 */  CURLINFO_DATA_OUT,     /* 4 */  CURLINFO_SSL_DATA_IN,  /* 5 */  CURLINFO_SSL_DATA_OUT, /* 6 */  CURLINFO_END} curl_infotype;typedef int (*curl_debug_callback)       (CURL *handle,      /* the handle/transfer this concerns */        curl_infotype type, /* what kind of data */        char *data,        /* points to the data */        size_t size,       /* size of the data pointed to */        void *userptr);    /* whatever the user please *//* All possible error codes from all sorts of curl functions. Future versions   may return other values, stay prepared.   Always add new return codes last. Never *EVER* remove any. The return   codes must remain the same! */typedef enum {  CURLE_OK = 0,  CURLE_UNSUPPORTED_PROTOCOL,    /* 1 */  CURLE_FAILED_INIT,             /* 2 */  CURLE_URL_MALFORMAT,           /* 3 */  CURLE_URL_MALFORMAT_USER,      /* 4 - NOT USED */  CURLE_COULDNT_RESOLVE_PROXY,   /* 5 */  CURLE_COULDNT_RESOLVE_HOST,    /* 6 */  CURLE_COULDNT_CONNECT,         /* 7 */  CURLE_FTP_WEIRD_SERVER_REPLY,  /* 8 */  CURLE_FTP_ACCESS_DENIED,       /* 9 a service was denied by the FTP server                                    due to lack of access - when login fails                                    this is not returned. */  CURLE_FTP_USER_PASSWORD_INCORRECT, /* 10 - NOT USED */  CURLE_FTP_WEIRD_PASS_REPLY,    /* 11 */  CURLE_FTP_WEIRD_USER_REPLY,    /* 12 */  CURLE_FTP_WEIRD_PASV_REPLY,    /* 13 */  CURLE_FTP_WEIRD_227_FORMAT,    /* 14 */  CURLE_FTP_CANT_GET_HOST,       /* 15 */  CURLE_FTP_CANT_RECONNECT,      /* 16 */  CURLE_FTP_COULDNT_SET_BINARY,  /* 17 */  CURLE_PARTIAL_FILE,            /* 18 */  CURLE_FTP_COULDNT_RETR_FILE,   /* 19 */  CURLE_FTP_WRITE_ERROR,         /* 20 */  CURLE_FTP_QUOTE_ERROR,         /* 21 */  CURLE_HTTP_RETURNED_ERROR,     /* 22 */  CURLE_WRITE_ERROR,             /* 23 */  CURLE_MALFORMAT_USER,          /* 24 - NOT USED */  CURLE_FTP_COULDNT_STOR_FILE,   /* 25 - failed FTP upload */  CURLE_READ_ERROR,              /* 26 - could open/read from file */  CURLE_OUT_OF_MEMORY,           /* 27 */  /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error           instead of a memory allocation error if CURL_DOES_CONVERSIONS           is defined  */  CURLE_OPERATION_TIMEOUTED,     /* 28 - the timeout time was reached */  CURLE_FTP_COULDNT_SET_ASCII,   /* 29 - TYPE A failed */  CURLE_FTP_PORT_FAILED,         /* 30 - FTP PORT operation failed */  CURLE_FTP_COULDNT_USE_REST,    /* 31 - the REST command failed */  CURLE_FTP_COULDNT_GET_SIZE,    /* 32 - the SIZE command failed */  CURLE_HTTP_RANGE_ERROR,        /* 33 - RANGE "command" didn't work */  CURLE_HTTP_POST_ERROR,         /* 34 */  CURLE_SSL_CONNECT_ERROR,       /* 35 - wrong when connecting with SSL */  CURLE_BAD_DOWNLOAD_RESUME,     /* 36 - couldn't resume download */  CURLE_FILE_COULDNT_READ_FILE,  /* 37 */  CURLE_LDAP_CANNOT_BIND,        /* 38 */  CURLE_LDAP_SEARCH_FAILED,      /* 39 */  CURLE_LIBRARY_NOT_FOUND,       /* 40 */  CURLE_FUNCTION_NOT_FOUND,      /* 41 */  CURLE_ABORTED_BY_CALLBACK,     /* 42 */  CURLE_BAD_FUNCTION_ARGUMENT,   /* 43 */  CURLE_BAD_CALLING_ORDER,       /* 44 - NOT USED */  CURLE_INTERFACE_FAILED,        /* 45 - CURLOPT_INTERFACE failed */  CURLE_BAD_PASSWORD_ENTERED,    /* 46 - NOT USED */  CURLE_TOO_MANY_REDIRECTS ,     /* 47 - catch endless re-direct loops */  CURLE_UNKNOWN_TELNET_OPTION,   /* 48 - User specified an unknown option */  CURLE_TELNET_OPTION_SYNTAX ,   /* 49 - Malformed telnet option */  CURLE_OBSOLETE,                /* 50 - NOT USED */  CURLE_SSL_PEER_CERTIFICATE,    /* 51 - peer's certificate wasn't ok */  CURLE_GOT_NOTHING,             /* 52 - when this is a specific error */  CURLE_SSL_ENGINE_NOTFOUND,     /* 53 - SSL crypto engine not found */  CURLE_SSL_ENGINE_SETFAILED,    /* 54 - can not set SSL crypto engine as                                    default */  CURLE_SEND_ERROR,              /* 55 - failed sending network data */  CURLE_RECV_ERROR,              /* 56 - failure in receiving network data */  CURLE_SHARE_IN_USE,            /* 57 - share is in use */  CURLE_SSL_CERTPROBLEM,         /* 58 - problem with the local certificate */  CURLE_SSL_CIPHER,              /* 59 - couldn't use specified cipher */  CURLE_SSL_CACERT,              /* 60 - problem with the CA cert (path?) */  CURLE_BAD_CONTENT_ENCODING,    /* 61 - Unrecognized transfer encoding */  CURLE_LDAP_INVALID_URL,        /* 62 - Invalid LDAP URL */  CURLE_FILESIZE_EXCEEDED,       /* 63 - Maximum file size exceeded */  CURLE_FTP_SSL_FAILED,          /* 64 - Requested FTP SSL level failed */  CURLE_SEND_FAIL_REWIND,        /* 65 - Sending the data requires a rewind                                    that failed */  CURLE_SSL_ENGINE_INITFAILED,   /* 66 - failed to initialise ENGINE */  CURLE_LOGIN_DENIED,            /* 67 - user, password or similar was not                                    accepted and we failed to login */  CURLE_TFTP_NOTFOUND,           /* 68 - file not found on server */  CURLE_TFTP_PERM,               /* 69 - permission problem on server */  CURLE_TFTP_DISKFULL,           /* 70 - out of disk space on server */  CURLE_TFTP_ILLEGAL,            /* 71 - Illegal TFTP operation */  CURLE_TFTP_UNKNOWNID,          /* 72 - Unknown transfer ID */  CURLE_TFTP_EXISTS,             /* 73 - File already exists */  CURLE_TFTP_NOSUCHUSER,         /* 74 - No such user */  CURLE_CONV_FAILED,             /* 75 - conversion failed */  CURLE_CONV_REQD,               /* 76 - caller must register conversion                                    callbacks using curl_easy_setopt options                                    CURLOPT_CONV_FROM_NETWORK_FUNCTION,                                    CURLOPT_CONV_TO_NETWORK_FUNCTION, and                                    CURLOPT_CONV_FROM_UTF8_FUNCTION */  CURL_LAST /* never use! */} CURLcode;/* This prototype applies to all conversion callbacks */typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl,    /* easy handle */                                          void *ssl_ctx, /* actually an                                                            OpenSSL SSL_CTX */                                          void *userptr);/* Make a spelling correction for the operation timed-out define */#define CURLE_OPERATION_TIMEDOUT CURLE_OPERATION_TIMEOUTED#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all                          the obsolete stuff removed! *//* backwards compatibility with older names */#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED#endiftypedef enum {  CURLPROXY_HTTP = 0,  CURLPROXY_SOCKS4 = 4,  CURLPROXY_SOCKS5 = 5} curl_proxytype;#define CURLAUTH_NONE         0       /* nothing */#define CURLAUTH_BASIC        (1<<0)  /* Basic (default) */#define CURLAUTH_DIGEST       (1<<1)  /* Digest */#define CURLAUTH_GSSNEGOTIATE (1<<2)  /* GSS-Negotiate */#define CURLAUTH_NTLM         (1<<3)  /* NTLM */#define CURLAUTH_ANY ~0               /* all types set */#define CURLAUTH_ANYSAFE (~CURLAUTH_BASIC)#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all                          the obsolete stuff removed! *//* this was the error code 50 in 7.7.3 and a few earlier versions, this   is no longer used by libcurl but is instead #defined here only to not   make programs break */#define CURLE_ALREADY_COMPLETE 99999/* These are just to make older programs not break: */#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME#endif#define CURL_ERROR_SIZE 256/* parameter for the CURLOPT_FTP_SSL option */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -