diff options
author | Daniel Stenberg <daniel@haxx.se> | 1999-12-29 14:20:26 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 1999-12-29 14:20:26 +0000 |
commit | ae1912cb0d494b48d514d937826c9fe83ec96c4d (patch) | |
tree | 3b027d577182fc74bade646227f729eac461d0d2 /include | |
download | curl-ae1912cb0d494b48d514d937826c9fe83ec96c4d.tar.gz |
Initial revision
Diffstat (limited to 'include')
-rw-r--r-- | include/README | 15 | ||||
-rw-r--r-- | include/curl/curl.beos-patch | 46 | ||||
-rw-r--r-- | include/curl/curl.h | 434 | ||||
-rw-r--r-- | include/curl/getdate.h | 0 | ||||
-rw-r--r-- | include/curl/mprintf.h | 93 | ||||
-rw-r--r-- | include/curl/stdcheaders.h | 53 |
6 files changed, 641 insertions, 0 deletions
diff --git a/include/README b/include/README new file mode 100644 index 000000000..fc9ea9137 --- /dev/null +++ b/include/README @@ -0,0 +1,15 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +Include files for libcurl, external users. + +They're all placed in the curl subdirectory here for better fit in any kind +of environment. You should include files from here using... + + #include <curl/curl.h> + +... style and point the compiler's include path to the directory holding the +curl subdirectory. It makes it more likely to survice future modifications. diff --git a/include/curl/curl.beos-patch b/include/curl/curl.beos-patch new file mode 100644 index 000000000..67bab368e --- /dev/null +++ b/include/curl/curl.beos-patch @@ -0,0 +1,46 @@ +Index: include/curl/curl.h +=================================================================== +RCS file: /cvs/curl/curl/include/curl/curl.h,v +retrieving revision 1.5 +diff -u -r1.5 curl.h +--- curl.h 1999/11/23 08:22:42 1.5 ++++ curl.h 1999/11/24 16:19:11 +@@ -365,9 +365,13 @@ + TIMECOND_LAST + } TimeCond; + ++#ifdef __BEOS__ ++#include <support/SupportDefs.h> ++#else + #ifndef __cplusplus /* (rabe) */ + typedef char bool; + #endif /* (rabe) */ ++#endif + + /********************************************************************** + * +Index: include/curl/setup.h +=================================================================== +RCS file: /cvs/curl/curl/include/curl/setup.h,v +retrieving revision 1.2 +diff -u -r1.2 setup.h +--- setup.h 1999/10/17 11:18:34 1.2 ++++ setup.h 1999/11/24 16:19:11 +@@ -139,10 +139,17 @@ + #define DOT_CHAR "_" + + #else ++#ifdef __BEOS__ ++#define sclose(x) closesocket(x) ++#define sread(x,y,z) recv(x,y,z,0) ++#define swrite(x,y,z) send(x,y,z,0) ++#define myalarm(x) alarm(x) ++#else + #define sclose(x) close(x) + #define sread(x,y,z) read(x,y,z) + #define swrite(x,y,z) write(x,y,z) + #define myalarm(x) alarm(x) ++#endif + + #define PATH_CHAR ":" + #define DIR_CHAR "/" diff --git a/include/curl/curl.h b/include/curl/curl.h new file mode 100644 index 000000000..a74625dbd --- /dev/null +++ b/include/curl/curl.h @@ -0,0 +1,434 @@ +#ifndef __URL_H +#define __URL_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg <Daniel.Stenberg@haxx.nu> + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + + +#define CONF_DEFAULT 0 +#define CONF_PROXY (1<<0) /* set if proxy is in use */ +#define CONF_PORT (1<<1) /* set if different port than protcol-defines is + used */ +#define CONF_HTTP (1<<2) /* http get */ +#define CONF_GOPHER (1<<3) /* gopher get */ +#define CONF_FTP (1<<4) /* ftp get (binary mode) */ +#define CONF_VERBOSE (1<<5) /* talk a lot */ + +#define CONF_TELNET (1<<6) + +#define CONF_HEADER (1<<8) /* throw the header out too */ +#define CONF_USERPWD (1<<9) /* user+passwd has been specified */ +#define CONF_NOPROGRESS (1<<10) /* shut off the progress meter (auto) + see also _MUTE */ +#define CONF_NOBODY (1<<11) /* use HEAD to get http document */ +#define CONF_FAILONERROR (1<<12) /* Makes urlget() fail with a return code + WITHOUT writing anything to the output if + a return code >=300 is returned from the + server. */ +#define CONF_RANGE (1<<13) /* Byte-range request, specified parameter is set */ +#define CONF_UPLOAD (1<<14) /* this is an upload, only supported for ftp + currently */ + +#define CONF_POST (1<<15) /* HTTP POST method */ + +/* When getting an FTP directory, this switch makes the listing only show file + names and nothing else. Makes machine parsing of the output possible. This + enforces the NLST command to the ftp server, compared to the otherwise + used: LIST. */ +#define CONF_FTPLISTONLY (1<<16) + +/* Set the referer string */ +#define CONF_REFERER (1<<17) +#define CONF_PROXYUSERPWD (1<<18) /* Proxy user+passwd has been specified */ + +/* For FTP, use PORT instead of PASV! */ +#define CONF_FTPPORT (1<<19) + +/* FTP: Append instead of overwrite on upload! */ +#define CONF_FTPAPPEND (1<<20) + +#define CONF_HTTPS (1<<21) /* Use SSLeay for encrypted communication */ + +#define CONF_NETRC (1<<22) /* read user+password from .netrc */ + +#define CONF_FOLLOWLOCATION (1<<23) /* get the page that the Location: tells + us to get */ + +#define CONF_FTPASCII (1<<24) /* use TYPE A for transfer */ + +#define CONF_HTTPPOST (1<<25) /* this causes a multipart/form-data + HTTP POST */ +#define CONF_NOPROT (1<<26) /* host name specified without protocol */ + +#define CONF_PUT (1<<27) /* PUT the input file */ + +#define CONF_MUTE (1<<28) /* force NOPROGRESS */ + +#define CONF_DICT (1<<29) /* DICT:// protocol */ + +#define CONF_FILE (1<<30) /* FILE:// protocol */ + +#define CONF_LDAP (1<<31) /* LDAP:// protocol */ + +#ifdef MULTIDOC +struct MoreDoc { + struct MoreDoc *next; /* next entry in the list */ + char *path; /* pointer to allocated path */ + FILE *store; /* where to put the doc */ +}; +#endif + +struct HttpHeader { + struct HttpHeader *next; /* next entry in the list */ + char *header; /* pointer to allocated line without newline */ +}; + +struct HttpPost { + struct HttpPost *next; /* next entry in the list */ + char *name; /* pointer to allocated name */ + char *contents; /* pointer to allocated data contents */ + char *contenttype; /* Content-Type */ + struct 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 */ +}; + + +/* All possible error codes from this version of urlget(). Future versions + may return other values, stay prepared. */ + +typedef enum { + URG_OK = 0, + URG_UNSUPPORTED_PROTOCOL, + URG_FAILED_INIT, + URG_URL_MALFORMAT, + URG_URL_MALFORMAT_USER, + URG_COULDNT_RESOLVE_PROXY, + URG_COULDNT_RESOLVE_HOST, + URG_COULDNT_CONNECT, + URG_FTP_WEIRD_SERVER_REPLY, + URG_FTP_ACCESS_DENIED, + URG_FTP_USER_PASSWORD_INCORRECT, + URG_FTP_WEIRD_PASS_REPLY, + URG_FTP_WEIRD_USER_REPLY, + URG_FTP_WEIRD_PASV_REPLY, + URG_FTP_WEIRD_227_FORMAT, + URG_FTP_CANT_GET_HOST, + URG_FTP_CANT_RECONNECT, + URG_FTP_COULDNT_SET_BINARY, + URG_PARTIAL_FILE, + URG_FTP_COULDNT_RETR_FILE, + URG_FTP_WRITE_ERROR, + URG_FTP_QUOTE_ERROR, + URG_HTTP_NOT_FOUND, + URG_WRITE_ERROR, + + URG_MALFORMAT_USER, /* the user name is illegally specified */ + URG_FTP_COULDNT_STOR_FILE, /* failed FTP upload */ + URG_READ_ERROR, /* could open/read from file */ + + URG_OUT_OF_MEMORY, + URG_OPERATION_TIMEOUTED, /* the timeout time was reached */ + URG_FTP_COULDNT_SET_ASCII, /* TYPE A failed */ + + URG_FTP_PORT_FAILED, /* FTP PORT operation failed */ + + URG_FTP_COULDNT_USE_REST, /* the REST command failed */ + URG_FTP_COULDNT_GET_SIZE, /* the SIZE command failed */ + + URG_HTTP_RANGE_ERROR, /* The RANGE "command" didn't seem to work */ + + URG_HTTP_POST_ERROR, + + URG_SSL_CONNECT_ERROR, /* something was wrong when connecting with SSL */ + + URG_FTP_BAD_DOWNLOAD_RESUME, /* couldn't resume download */ + + URG_FILE_COULDNT_READ_FILE, + + URG_LDAP_CANNOT_BIND, + URG_LDAP_SEARCH_FAILED, + URG_LIBRARY_NOT_FOUND, + URG_FUNCTION_NOT_FOUND, + + URL_LAST +} UrgError; + +/* This is just to make older programs not break: */ +#define URG_FTP_PARTIAL_FILE URG_PARTIAL_FILE + +#define URGTAG_DONE -1 +#define URGTAG_LAST -1 +#define URGTAG_END -1 + +#define URLGET_ERROR_SIZE 256 + +/* maximum URL length we deal with */ +#define URL_MAX_LENGTH 4096 +#define URL_MAX_LENGTH_TXT "4095" + +/* name is uppercase URGTAG_<name>, + type is one of the defined URGTYPE_<type> + number is unique identifier */ +#define T(name,type,number) URGTAG_ ## name = URGTYPE_ ## type + number + +/* long may be 32 or 64 bits, but we should never depend on anything else + but 32 */ +#define URGTYPE_LONG 0 +#define URGTYPE_OBJECTPOINT 10000 +#define URGTYPE_FUNCTIONPOINT 20000 + +typedef enum { + URGTAG_NOTHING, /* the first unused */ + + /* This is the FILE * the regular output should be written to. */ + T(FILE, OBJECTPOINT, 1), + + /* The full URL to get/put */ + T(URL, OBJECTPOINT, 2), + + /* Port number to connect to, if other than default. Specify the CONF_PORT + flag in the URGTAG_FLAGS to activate this */ + T(PORT, LONG, 3), + + /* Name of proxy to use. Specify the CONF_PROXY flag in the URGTAG_FLAGS to + activate this */ + T(PROXY, OBJECTPOINT, 4), + + /* Name and password to use when fetching. Specify the CONF_USERPWD flag in + the URGTAG_FLAGS to activate this */ + T(USERPWD, OBJECTPOINT, 5), + + /* Name and password to use with Proxy. Specify the CONF_PROXYUSERPWD + flag in the URGTAG_FLAGS to activate this */ + T(PROXYUSERPWD, OBJECTPOINT, 6), + + /* Range to get, specified as an ASCII string. Specify the CONF_RANGE flag + in the URGTAG_FLAGS to activate this */ + T(RANGE, OBJECTPOINT, 7), + + /* Configuration flags */ + T(FLAGS, LONG, 8), + + /* Specified file stream to upload from (use as input): */ + T(INFILE, OBJECTPOINT, 9), + + /* Buffer to receive error messages in, must be at least URLGET_ERROR_SIZE + bytes big. If this is not used, error messages go to stderr instead: */ + T(ERRORBUFFER, OBJECTPOINT, 10), + + /* Function that will be called to store the output (instead of fwrite). The + parameters will use fwrite() syntax, make sure to follow them. */ + T(WRITEFUNCTION, FUNCTIONPOINT, 11), + + /* Function that will be called to read the input (instead of fread). The + parameters will use fread() syntax, make sure to follow them. */ + T(READFUNCTION, FUNCTIONPOINT, 12), + + /* Time-out the read operation after this amount of seconds */ + T(TIMEOUT, LONG, 13), + + /* If the URGTAG_INFILE is used, this can be used to inform urlget about how + large the file being sent really is. That allows better error checking + and better verifies that the upload was succcessful. -1 means unknown + size. */ + T(INFILESIZE, LONG, 14), + + /* POST input fields. */ + T(POSTFIELDS, OBJECTPOINT, 15), + + /* Set the referer page (needed by some CGIs) */ + T(REFERER, OBJECTPOINT, 16), + + /* Set the FTP PORT string (interface name, named or numerical IP address) + Use i.e '-' to use default address. */ + T(FTPPORT, OBJECTPOINT, 17), + + /* Set the User-Agent string (examined by some CGIs) */ + T(USERAGENT, OBJECTPOINT, 18), + + /* If the download receives less than "low speed limit" bytes/second + * during "low speed time" seconds, the operations is aborted. + * You could i.e if you have a pretty high speed connection, abort if + * it is less than 2000 bytes/sec during 20 seconds. + */ + + /* Set the "low speed limit" */ + T(LOW_SPEED_LIMIT, LONG , 19), + + /* Set the "low speed time" */ + T(LOW_SPEED_TIME, LONG, 20), + + /* Set the continuation offset */ + T(RESUME_FROM, LONG, 21), + + /* Set cookie in request: */ + T(COOKIE, OBJECTPOINT, 22), + + /* This points to a linked list of headers, struct HttpHeader kind */ + T(HTTPHEADER, OBJECTPOINT, 23), + + /* This points to a linked list of post entries, struct HttpPost */ + T(HTTPPOST, OBJECTPOINT, 24), + + /* name of the file keeping your private SSL-certificate */ + T(SSLCERT, OBJECTPOINT, 25), + + /* password for the SSL-certificate */ + T(SSLCERTPASSWD, OBJECTPOINT, 26), + + /* send TYPE parameter? */ + T(CRLF, LONG, 27), + + /* send linked-list of QUOTE commands */ + T(QUOTE, OBJECTPOINT, 28), + + /* send FILE * to store headers to */ + T(WRITEHEADER, OBJECTPOINT, 29), + +#ifdef MULTIDOC + /* send linked list of MoreDoc structs */ + T(MOREDOCS, OBJECTPOINT, 30), +#endif + + /* point to a file to read the initial cookies from, also enables + "cookie awareness" */ + T(COOKIEFILE, OBJECTPOINT, 31), + + /* What version to specifly try to use. + 3 = SSLv3, 2 = SSLv2, all else makes it try v3 first then v2 */ + T(SSLVERSION, LONG, 32), + + /* What kind of HTTP time condition to use, see defines */ + T(TIMECONDITION, LONG, 33), + + /* Time to use with the above condition. Specified in number of seconds + since 1 Jan 1970 */ + T(TIMEVALUE, LONG, 34), + + /* HTTP request, for odd commands like DELETE, TRACE and others */ + /* OBSOLETE DEFINE, left for tradition only */ + T(HTTPREQUEST, OBJECTPOINT, 35), + + /* Custom request, for customizing the get command like + HTTP: DELETE, TRACE and others + FTP: to use a different list command + */ + T(CUSTOMREQUEST, OBJECTPOINT, 35), + + /* HTTP request, for odd commands like DELETE, TRACE and others */ + T(STDERR, OBJECTPOINT, 36), + + /* Progress mode sets alternative progress mode displays, the only + one defined today is 1 which makes the #-style progress bar. */ + T(PROGRESSMODE, LONG, 37), + + URGTAG_LASTENTRY /* the last unusued */ +} UrgTag; + +#define CURL_PROGRESS_STATS 0 /* default progress display */ +#define CURL_PROGRESS_BAR 1 + +typedef enum { + TIMECOND_NONE, + + TIMECOND_IFMODSINCE, + TIMECOND_IFUNMODSINCE, + TIMECOND_LASTMOD, + + TIMECOND_LAST +} TimeCond; + +#ifdef __BEOS__ +#include <support/SupportDefs.h> +#else +#ifndef __cplusplus /* (rabe) */ +typedef char bool; +#endif /* (rabe) */ +#endif + +/********************************************************************** + * + * >>> urlget() interface #defines changed in v5! <<< + * + * You enter parameters as tags. Tags are specified as a pair of parameters. + * The first parameter in a pair is the tag identifier, telling urlget what + * kind of tag it is, and the second is the data. The tags may come in any + * order but MUST ALWAYS BE TERMINATED with an ending URGTAG_DONE (which + * needs no data). + * + * _Very_ simple example: + * + * curl_urlget(URGTAG_URL, "http://www.fts.frontec.se/~dast/", URGTAG_DONE); + * + ***********************************************************************/ + +UrgError curl_urlget(UrgTag, ...); + +/* external form function */ +int curl_FormParse(char *string, + struct HttpPost **httppost, + struct HttpPost **last_post); + +/* Unix and Win32 getenv function call */ +char *curl_GetEnv(char *variable); + +/* returns ascii string of the libcurl version */ +char *curl_version(void); + +/* This is the version number */ +#define LIBCURL_VERSION "6.3.1" + +/* linked-list structure for QUOTE */ +struct curl_slist { + char *data; + struct curl_slist *next; +}; + +struct curl_slist *curl_slist_append(struct curl_slist *list, char *data); +void curl_slist_free_all(struct curl_slist *list); + +#endif /* __URLGET_H */ diff --git a/include/curl/getdate.h b/include/curl/getdate.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/include/curl/getdate.h diff --git a/include/curl/mprintf.h b/include/curl/mprintf.h new file mode 100644 index 000000000..65c64f439 --- /dev/null +++ b/include/curl/mprintf.h @@ -0,0 +1,93 @@ +/************************************************************************* + * + * $Id$ + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + * the License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Triacle. + * + * The Initial Developers of the Original Code are Bjorn Reese and + * Daniel Stenberg. + * + * Portions created by Initial Developers are + * + * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. + * All Rights Reserved. + * + * Contributor(s): + * + ************************************************************************* + * + * Preliminary documentation + * + * printf conversions: + * + * conversion ::= '%%' | '%' [position] ( number | float | string ) + * position ::= digits '$' + * number ::= [number-flags] ( 'd' | 'i' | 'o' | 'x' | 'X' | 'u') + * number-flags ::= 'h' | 'l' | 'L' ... + * float ::= [float-flags] ( 'f' | 'e' | 'E' | 'g' | 'G' ) + * string ::= [string-flags] 's' + * string-flags ::= padding | '#' + * digits ::= (digit)+ + * digit ::= 0-9 + * + * c + * p + * n + * + * qualifiers + * + * - : left adjustment + * + : show sign + * SPACE : padding + * # : alterative + * . : precision + * * : width + * 0 : padding / size + * 1-9 : size + * h : short + * l : long + * ll : longlong + * L : long double + * Z : long / longlong + * q : longlong + * + ************************************************************************/ + +#ifndef H_MPRINTF +#define H_MPRINTF + +#include <stdarg.h> + +int mprintf(const char *format, ...); +int mfprintf(FILE *fd, const char *format, ...); +int msprintf(char *buffer, const char *format, ...); +int msnprintf(char *buffer, size_t maxlength, const char *format, ...); +int mvprintf(const char *format, va_list args); +int mvfprintf(FILE *fd, const char *format, va_list args); +int mvsprintf(char *buffer, const char *format, va_list args); +int mvsnprintf(char *buffer, size_t maxlength, const char *format, va_list args); +char *maprintf(const char *format, ...); +char *mvaprintf(const char *format, va_list args); + +#ifdef _MPRINTF_REPLACE +# define printf mprintf +# define fprintf mfprintf +# define sprintf msprintf +# define snprintf msnprintf +# define vprintf mvprintf +# define vfprintf mvfprintf +# define vsprintf mvsprintf +# define vsnprintf mvsnprintf +#endif + +#endif /* H_MPRINTF */ diff --git a/include/curl/stdcheaders.h b/include/curl/stdcheaders.h new file mode 100644 index 000000000..3027b86e9 --- /dev/null +++ b/include/curl/stdcheaders.h @@ -0,0 +1,53 @@ +#ifndef __STDC_HEADERS_H +#define __STDC_HEADERS_H +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Curl. + * + * The Initial Developer of the Original Code is Daniel Stenberg. + * + * Portions created by the Initial Developer are Copyright (C) 1998. + * All Rights Reserved. + * + * ------------------------------------------------------------ + * Main author: + * - Daniel Stenberg <Daniel.Stenberg@haxx.nu> + * + * http://curl.haxx.nu + * + * $Source$ + * $Revision$ + * $Date$ + * $Author$ + * $State$ + * $Locker$ + * + * ------------------------------------------------------------ + ****************************************************************************/ + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +size_t fread (void *, size_t, size_t, FILE *); +size_t fwrite (const void *, size_t, size_t, FILE *); + +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, size_t); + +#endif |