mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
Paul Nolan fix to make libcurl build nicely on Windows CE
This commit is contained in:
parent
8a66584db4
commit
24d47a6e07
3
CHANGES
3
CHANGES
@ -6,6 +6,9 @@
|
||||
|
||||
Changelog
|
||||
|
||||
Daniel (2 November 2004)
|
||||
- Paul Nolan provided a patch to make libcurl build nicely on Windows CE.
|
||||
|
||||
Daniel (1 November 2004)
|
||||
- When cross-compiling, the configure script no longer attempts to use
|
||||
pkg-config on the build host in order to detect OpenSSL compiler options.
|
||||
|
@ -52,10 +52,16 @@ extern "C" {
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#if defined(_MSC_VER) || defined(__LCC__)
|
||||
/* 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 || __LCC__ */
|
||||
#if (defined(__GNUC__) && defined(WIN32)) || defined(__WATCOMC__)
|
||||
/* gcc on windows or Watcom */
|
||||
|
@ -51,7 +51,8 @@
|
||||
#define WIN32 1
|
||||
#endif
|
||||
|
||||
#if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__)
|
||||
#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__GNUC__) || \
|
||||
defined(__MINGW32__)
|
||||
#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H))
|
||||
/* The check above prevents the winsock2 inclusion if winsock.h already was
|
||||
included, since they can't co-exist without problems */
|
||||
|
@ -31,7 +31,7 @@ EXTRA_DIST = Makefile.b32 Makefile.m32 \
|
||||
README.curlx makefile.dj config.dj libcurl.framework.make \
|
||||
libcurl.plist libcurl.rc config-amigaos.h amigaos.c amigaos.h \
|
||||
makefile.amiga Makefile.netware nwlib.c libcurl.imp \
|
||||
msvcproj.head msvcproj.foot
|
||||
msvcproj.head msvcproj.foot config-win32ce.h
|
||||
|
||||
CLEANFILES = $(DSP)
|
||||
|
||||
|
258
lib/config-win32ce.h
Normal file
258
lib/config-win32ce.h
Normal file
@ -0,0 +1,258 @@
|
||||
/* config.h. Generated automatically by configure. */
|
||||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
||||
|
||||
#ifndef __CONFIG_WIN32_H
|
||||
#define __CONFIG_WIN32_H
|
||||
|
||||
/* Define if on AIX 3.
|
||||
System headers sometimes define this.
|
||||
We just want to avoid a redefinition error message. */
|
||||
#ifndef _ALL_SOURCE
|
||||
/* #undef _ALL_SOURCE */
|
||||
#endif
|
||||
|
||||
/* Define to empty if the keyword does not work. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define if you don't have vprintf but do have _doprnt. */
|
||||
/* #undef HAVE_DOPRNT */
|
||||
|
||||
/* Define if you have the vprintf function. */
|
||||
#define HAVE_VPRINTF 1
|
||||
|
||||
/* Define as the return type of signal handlers (int or void). */
|
||||
/*#define RETSIGTYPE void */
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> doesn't define. */
|
||||
/* #undef size_t */
|
||||
|
||||
/* Define this to 'int' if ssize_t is not an available typedefed type */
|
||||
#define ssize_t int
|
||||
|
||||
/* Define this to 'int' if socklen_t is not an available typedefed type */
|
||||
#if !defined(ENABLE_IPV6) && ((_MSC_VER < 1300) || !defined(USE_SSLEAY))
|
||||
#define socklen_t int
|
||||
#endif
|
||||
|
||||
/* The size of a `curl_off_t', as computed by sizeof. */
|
||||
#ifdef SIZEOF_CURL_OFF_T
|
||||
#undef SIZEOF_CURL_OFF_T
|
||||
#endif
|
||||
|
||||
/* Borland lacks _lseeki64(), so we don't support >2GB files */
|
||||
#define SIZEOF_CURL_OFF_T 4
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
||||
/* #define TIME_WITH_SYS_TIME 1 */
|
||||
|
||||
/* Define cpu-machine-OS */
|
||||
#define OS "i386-pc-win32"
|
||||
|
||||
/* The number of bytes in a long double. */
|
||||
#define SIZEOF_LONG_DOUBLE 16
|
||||
|
||||
/* The number of bytes in a long long. */
|
||||
/* #define SIZEOF_LONG_LONG 8 */
|
||||
|
||||
/* Define if you have the gethostbyaddr function. */
|
||||
#define HAVE_GETHOSTBYADDR 1
|
||||
|
||||
/* Define if you have the gethostname function. */
|
||||
#define HAVE_GETHOSTNAME 1
|
||||
|
||||
/* Define if you have the getpass function. */
|
||||
/*#define HAVE_GETPASS 1*/
|
||||
|
||||
/* Define if you have the getservbyname function. */
|
||||
#define HAVE_GETSERVBYNAME 1
|
||||
|
||||
/* Define if you have the gettimeofday function. */
|
||||
/* #define HAVE_GETTIMEOFDAY 1 */
|
||||
|
||||
/* Define if you have the inet_addr function. */
|
||||
#define HAVE_INET_ADDR 1
|
||||
|
||||
/* Define if you have the inet_ntoa function. */
|
||||
#define HAVE_INET_NTOA 1
|
||||
|
||||
/* Define if you have the perror function. */
|
||||
#define HAVE_PERROR 1
|
||||
|
||||
/* Define if you have the select function. */
|
||||
#define HAVE_SELECT 1
|
||||
|
||||
/* Define if you have the socket function. */
|
||||
#define HAVE_SOCKET 1
|
||||
|
||||
/* Define if you have the strcasecmp function. */
|
||||
/*#define HAVE_STRCASECMP 1*/
|
||||
|
||||
/* Define if you have the stricmp function. */
|
||||
//#define HAVE_STRICMP 1
|
||||
|
||||
/* Define if you have the strdup function. */
|
||||
//#define HAVE_STRDUP 1
|
||||
|
||||
/* Define if you have the strftime function. */
|
||||
//#define HAVE_STRFTIME 1
|
||||
|
||||
/* Define if you have the strstr function. */
|
||||
#define HAVE_STRSTR 1
|
||||
|
||||
/* Define if you have the strtoll function. */
|
||||
#ifdef MINGW32
|
||||
#define HAVE_STRTOLL 1
|
||||
#endif
|
||||
|
||||
/* Define if you have the tcgetattr function. */
|
||||
/*#define HAVE_TCGETATTR 1*/
|
||||
|
||||
/* Define if you have the tcsetattr function. */
|
||||
/*#define HAVE_TCSETATTR 1*/
|
||||
|
||||
/* Define if you have the uname function. */
|
||||
/*#define HAVE_UNAME 1*/
|
||||
|
||||
/* Define if you have utime() */
|
||||
#define HAVE_UTIME 1
|
||||
|
||||
/* Define if you have the <alloca.h> header file. */
|
||||
/*#define HAVE_ALLOCA_H 1*/
|
||||
|
||||
/* Define if you have the malloc.h file. */
|
||||
#define HAVE_MALLOC_H 1
|
||||
|
||||
/* Define if you have the <arpa/inet.h> header file. */
|
||||
/* #define HAVE_ARPA_INET_H 1 */
|
||||
|
||||
/* Define if you have the <assert.h> header file. */
|
||||
//#define HAVE_ASSERT_H 1
|
||||
|
||||
/* Define if you have the <crypto.h> header file. */
|
||||
/* #undef HAVE_CRYPTO_H */
|
||||
|
||||
/* Define if you have the <dlfcn.h> header file. */
|
||||
/*#define HAVE_DLFCN_H 1*/
|
||||
|
||||
/* Define if you have the <err.h> header file. */
|
||||
/* #undef HAVE_ERR_H */
|
||||
|
||||
/* Define if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
||||
|
||||
/* Define if you have the <getopt.h> header file. */
|
||||
/* #undef HAVE_GETOPT_H */
|
||||
|
||||
/* Define if you have the <netdb.h> header file. */
|
||||
/* #define HAVE_NETDB_H 1 */
|
||||
|
||||
/* Define if you have the <netinet/in.h> header file. */
|
||||
/*#define HAVE_NETINET_IN_H 1*/
|
||||
|
||||
/* Define if you have the <sgtty.h> header file. */
|
||||
/*#define HAVE_SGTTY_H 1*/
|
||||
|
||||
/* Define if you have the <ssl.h> header file. */
|
||||
/* #undef HAVE_SSL_H */
|
||||
|
||||
/* Define if you have the <sys/param.h> header file. */
|
||||
/*#define HAVE_SYS_PARAM_H 1*/
|
||||
|
||||
/* Define if you have the <sys/select.h> header file. */
|
||||
/* #define HAVE_SYS_SELECT_H 1 */
|
||||
|
||||
/* Define if you have the <sys/socket.h> header file. */
|
||||
/*#define HAVE_SYS_SOCKET_H 1*/
|
||||
|
||||
/* Define if you have the <sys/sockio.h> header file. */
|
||||
/* #define HAVE_SYS_SOCKIO_H 1 */
|
||||
|
||||
/* Define if you have the <sys/stat.h> header file. */
|
||||
//#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define if you have the <sys/utime.h> header file */
|
||||
#define HAVE_SYS_UTIME_H 1
|
||||
|
||||
/* Define if you have the <sys/types.h> header file. */
|
||||
//#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define if you have the <termio.h> header file. */
|
||||
/* #define HAVE_TERMIO_H 1 */
|
||||
|
||||
/* Define if you have the <termios.h> header file. */
|
||||
/* #define HAVE_TERMIOS_H 1 */
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "curl"
|
||||
|
||||
/* Define if you have the <io.h> header file. */
|
||||
#define HAVE_IO_H 1
|
||||
|
||||
/* Define if you have the <time.h> header file. */
|
||||
#define HAVE_TIME_H 1
|
||||
|
||||
/* Define if you have the <winsock.h> header file. */
|
||||
#define HAVE_WINSOCK_H 1
|
||||
|
||||
/* Define if you have the <winsock2.h> header file. */
|
||||
//#define HAVE_WINSOCK2_H 1
|
||||
|
||||
/* Define if you have the <ws2tcpip.h> header file. */
|
||||
//#define HAVE_WS2TCPIP_H 1
|
||||
|
||||
/* Define if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define if you have the closesocket function. */
|
||||
#define HAVE_CLOSESOCKET 1
|
||||
|
||||
/* Define if you have the setvbuf function. */
|
||||
#define HAVE_SETVBUF 1
|
||||
|
||||
/* Define if you have the RAND_screen function when using SSL */
|
||||
#define HAVE_RAND_SCREEN 1
|
||||
|
||||
/* Define if you have the `RAND_status' function. */
|
||||
#define HAVE_RAND_STATUS 1
|
||||
|
||||
/* Define this to if in_addr_t is not an available typedefed type */
|
||||
#define in_addr_t unsigned long
|
||||
|
||||
/* use ioctlsocket() for non-blocking sockets */
|
||||
#define HAVE_IOCTLSOCKET
|
||||
|
||||
/*************************************************
|
||||
* This section is for compiler specific defines.*
|
||||
*************************************************/
|
||||
/* Borland and MS don't have this */
|
||||
#if defined(MINGW32) || defined(__WATCOMC__) || defined(__LCC__)
|
||||
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
#else
|
||||
|
||||
#endif
|
||||
|
||||
/* WinCE */
|
||||
|
||||
#define CURL_DISABLE_FILE
|
||||
|
||||
#define CURL_DISABLE_TELNET
|
||||
#define CURL_DISABLE_LDAP
|
||||
#define WITHOUT_MM_LIB
|
||||
|
||||
#include <winsock.h>
|
||||
#include <process.h>
|
||||
|
||||
extern int errno;
|
||||
|
||||
#define ENOSPC 1
|
||||
#define ENOMEM 2
|
||||
|
||||
extern int stat(const char *path,struct stat *buffer );
|
||||
|
||||
#endif
|
@ -156,6 +156,7 @@ int Curl_nonblock(curl_socket_t sockfd, /* operate on this */
|
||||
/* Windows? */
|
||||
unsigned long flags;
|
||||
flags = nonblock;
|
||||
|
||||
return ioctlsocket(sockfd, FIONBIO, &flags);
|
||||
#define SETBLOCK 3
|
||||
#endif
|
||||
@ -406,13 +407,25 @@ static bool verifyconnect(curl_socket_t sockfd, int *error)
|
||||
*
|
||||
* Someone got to verify this on Win-NT 4.0, 2000."
|
||||
*/
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
Sleep(0);
|
||||
#else
|
||||
SleepEx(0, FALSE);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
if( -1 == getsockopt(sockfd, SOL_SOCKET, SO_ERROR,
|
||||
(void *)&err, &errSize))
|
||||
err = Curl_ourerrno();
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
/* Always returns this error, bug in CE? */
|
||||
if(WSAENOPROTOOPT==err)
|
||||
err=0;
|
||||
#endif
|
||||
|
||||
if ((0 == err) || (EISCONN == err))
|
||||
/* we are connected, awesome! */
|
||||
rc = TRUE;
|
||||
|
@ -29,8 +29,12 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
|
@ -29,8 +29,12 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
@ -168,6 +172,11 @@ static long init_flags = 0;
|
||||
* If a memory-using function (like curl_getenv) is used before
|
||||
* curl_global_init() is called, we need to have these pointers set already.
|
||||
*/
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
#define strdup _strdup
|
||||
#endif
|
||||
|
||||
curl_malloc_callback Curl_cmalloc = (curl_malloc_callback)malloc;
|
||||
curl_free_callback Curl_cfree = (curl_free_callback)free;
|
||||
curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc;
|
||||
|
@ -30,8 +30,12 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
@ -66,9 +70,6 @@
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
#ifdef HAVE_FCNTL_H
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
|
@ -112,7 +112,9 @@ Content-Disposition: form-data; name="FILECONTENT"
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <time.h>
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
#if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)
|
||||
#include <libgen.h>
|
||||
#endif
|
||||
|
13
lib/ftp.c
13
lib/ftp.c
@ -476,7 +476,7 @@ CURLcode Curl_ftp_connect(struct connectdata *conn)
|
||||
char *buf = data->state.buffer; /* this is our buffer */
|
||||
struct FTP *ftp;
|
||||
CURLcode result;
|
||||
int ftpcode, try;
|
||||
int ftpcode, trynum;
|
||||
|
||||
ftp = (struct FTP *)malloc(sizeof(struct FTP));
|
||||
if(!ftp)
|
||||
@ -564,9 +564,9 @@ CURLcode Curl_ftp_connect(struct connectdata *conn)
|
||||
return CURLE_FAILED_INIT; /* we don't know what to do */
|
||||
}
|
||||
|
||||
for (try = start; ftpauth[count]; try=trynext, count++) {
|
||||
for (trynum = start; ftpauth[count]; trynum=trynext, count++) {
|
||||
|
||||
FTPSENDF(conn, "AUTH %s", ftpauth[try]);
|
||||
FTPSENDF(conn, "AUTH %s", ftpauth[trynum]);
|
||||
|
||||
result = Curl_GetFTPResponse(&nread, conn, &ftpcode);
|
||||
|
||||
@ -842,8 +842,15 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status)
|
||||
#ifdef HAVE_KRB4
|
||||
Curl_sec_fflush_fd(conn, conn->sock[SECONDARYSOCKET]);
|
||||
#endif
|
||||
|
||||
/* shut down the socket to inform the server we're done */
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
shutdown(conn->sock[SECONDARYSOCKET],2); /* SD_BOTH */
|
||||
#endif
|
||||
|
||||
sclose(conn->sock[SECONDARYSOCKET]);
|
||||
|
||||
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
|
||||
|
||||
if(!ftp->no_transfer && !status) {
|
||||
|
@ -43,6 +43,9 @@
|
||||
static
|
||||
char *GetEnv(const char *variable)
|
||||
{
|
||||
#ifdef _WIN32_WCE
|
||||
return NULL;
|
||||
#else
|
||||
#ifdef WIN32
|
||||
/* This shit requires windows.h (HUGE) to be included */
|
||||
char env[MAX_PATH]; /* MAX_PATH is from windef.h */
|
||||
@ -62,6 +65,7 @@ char *GetEnv(const char *variable)
|
||||
#endif
|
||||
#endif
|
||||
return (env && env[0])?strdup(env):NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
char *curl_getenv(const char *v)
|
||||
|
@ -195,7 +195,9 @@ static unsigned __stdcall gethostbyname_thread (void *arg)
|
||||
* hopefully make printouts synchronised. I'm not sure it works
|
||||
* with a static runtime lib (MSVC's libc.lib).
|
||||
*/
|
||||
#ifndef _WIN32_WCE
|
||||
*stderr = *td->stderr_file;
|
||||
#endif
|
||||
|
||||
WSASetLastError (conn->async.status = NO_DATA); /* pending status */
|
||||
he = gethostbyname (conn->async.hostname);
|
||||
@ -375,8 +377,15 @@ static bool init_resolve_thread (struct connectdata *conn,
|
||||
}
|
||||
|
||||
td->stderr_file = stderr;
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
td->thread_hnd=(HANDLE) CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) THREAD_FUNC,conn,0,&td->thread_id);
|
||||
#else
|
||||
|
||||
td->thread_hnd = (HANDLE) _beginthreadex(NULL, 0, THREAD_FUNC,
|
||||
conn, 0, &td->thread_id);
|
||||
#endif
|
||||
|
||||
#ifdef CURLRES_IPV6
|
||||
curlassert(hints);
|
||||
td->hints = *hints;
|
||||
|
@ -30,8 +30,12 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
|
@ -127,9 +127,9 @@ char *Curl_if2ip(const char *interface, char *buf, int buf_size)
|
||||
|
||||
/* -- end of if2ip() -- */
|
||||
#else
|
||||
char *Curl_if2ip(const char *interface, char *buf, int buf_size)
|
||||
char *Curl_if2ip(const char *interf, char *buf, int buf_size)
|
||||
{
|
||||
(void) interface;
|
||||
(void) interf;
|
||||
(void) buf;
|
||||
(void) buf_size;
|
||||
return NULL;
|
||||
|
@ -30,8 +30,12 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
#include <errno.h>
|
||||
|
||||
#if defined(WIN32)
|
||||
|
@ -40,6 +40,12 @@
|
||||
|
||||
#include <curl/mprintf.h>
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
#define CURL_CDECL __cdecl
|
||||
#else
|
||||
#define CURL_CDECL
|
||||
#endif
|
||||
|
||||
#ifndef SIZEOF_LONG_DOUBLE
|
||||
#define SIZEOF_LONG_DOUBLE 0
|
||||
#endif
|
||||
@ -583,7 +589,12 @@ static int dprintf_formatf(
|
||||
void *data, /* untouched by format(), just sent to the stream() function in
|
||||
the second argument */
|
||||
/* function pointer called for each output character */
|
||||
|
||||
#if _WIN32_WCE
|
||||
int (__cdecl *stream) (int, FILE *),
|
||||
#else
|
||||
int (*stream)(int, FILE *),
|
||||
#endif
|
||||
const char *format, /* %-formatted string */
|
||||
va_list ap_save) /* list of parameters */
|
||||
{
|
||||
@ -979,7 +990,7 @@ static int dprintf_formatf(
|
||||
}
|
||||
|
||||
/* fputc() look-alike */
|
||||
static int addbyter(int output, FILE *data)
|
||||
static int CURL_CDECL addbyter(int output, FILE *data)
|
||||
{
|
||||
struct nsprintf *infop=(struct nsprintf *)data;
|
||||
unsigned char outc = (unsigned char)output;
|
||||
@ -1027,7 +1038,7 @@ int curl_msnprintf(char *buffer, size_t maxlength, const char *format, ...)
|
||||
}
|
||||
|
||||
/* fputc() look-alike */
|
||||
static int alloc_addbyter(int output, FILE *data)
|
||||
static int CURL_CDECL alloc_addbyter(int output, FILE *data)
|
||||
{
|
||||
struct asprintf *infop=(struct asprintf *)data;
|
||||
unsigned char outc = (unsigned char)output;
|
||||
@ -1113,7 +1124,7 @@ char *curl_mvaprintf(const char *format, va_list ap_save)
|
||||
return strdup("");
|
||||
}
|
||||
|
||||
static int storebuffer(int output, FILE *data)
|
||||
static int CURL_CDECL storebuffer(int output, FILE *data)
|
||||
{
|
||||
char **buffer = (char **)data;
|
||||
unsigned char outc = (unsigned char)output;
|
||||
@ -1142,6 +1153,7 @@ int curl_mprintf(const char *format, ...)
|
||||
int retcode;
|
||||
va_list ap_save; /* argument pointer */
|
||||
va_start(ap_save, format);
|
||||
|
||||
retcode = dprintf_formatf(stdout, fputc, format, ap_save);
|
||||
va_end(ap_save);
|
||||
return retcode;
|
||||
|
@ -40,11 +40,15 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h" /* the configure script results */
|
||||
#else
|
||||
#ifdef _WIN32_WCE
|
||||
#include "config-win32ce.h"
|
||||
#else
|
||||
#ifdef WIN32
|
||||
/* hand-modified win32 config.h! */
|
||||
#include "config-win32.h"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef macintosh
|
||||
/* hand-modified MacOS config.h! */
|
||||
@ -173,7 +177,9 @@ defined(HAVE_LIBSSL) && defined(HAVE_LIBCRYPTO)
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#endif
|
||||
|
||||
#if HAVE_WINSOCK2_H
|
||||
#include <winsock2.h> /* required by telnet.c */
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_IPV6) || defined(USE_SSLEAY)
|
||||
#include <ws2tcpip.h>
|
||||
|
@ -515,15 +515,29 @@ const char *Curl_strerror(struct connectdata *conn, int err)
|
||||
*buf = '\0';
|
||||
|
||||
#if defined(WIN32) && !defined(__CYGWIN__)
|
||||
|
||||
#if _WIN32_WCE
|
||||
buf[0]=0;
|
||||
{
|
||||
wchar_t wbuf[256];
|
||||
|
||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
|
||||
LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL);
|
||||
wcstombs(buf,wbuf,max);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/* 'sys_nerr' is the maximum errno number, it is not widely portable */
|
||||
if (err >= 0 && err < sys_nerr)
|
||||
strncpy(buf, strerror(err), max);
|
||||
else {
|
||||
if (!get_winsock_error (err, buf, max) &&
|
||||
!FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
|
||||
if (!get_winsock_error(err, buf, max) &&
|
||||
!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
|
||||
LANG_NEUTRAL, buf, max, NULL))
|
||||
snprintf(buf, max, "Unknown error %d (%#x)", err, err);
|
||||
}
|
||||
#endif
|
||||
#else /* not native Windows coming up */
|
||||
|
||||
/* These should be atomic and hopefully thread-safe */
|
||||
|
@ -30,9 +30,12 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
|
||||
#endif
|
||||
#include <errno.h>
|
||||
|
||||
#if defined(WIN32)
|
||||
|
@ -32,7 +32,9 @@
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user