aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/README15
-rw-r--r--include/curl/curl.beos-patch46
-rw-r--r--include/curl/curl.h434
-rw-r--r--include/curl/getdate.h0
-rw-r--r--include/curl/mprintf.h93
-rw-r--r--include/curl/stdcheaders.h53
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