]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
Paul Nolan fix to make libcurl build nicely on Windows CE
authorDaniel Stenberg <daniel@haxx.se>
Tue, 2 Nov 2004 10:12:22 +0000 (10:12 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 2 Nov 2004 10:12:22 +0000 (10:12 +0000)
22 files changed:
CHANGES
include/curl/curl.h
include/curl/multi.h
lib/Makefile.am
lib/config-win32ce.h [new file with mode: 0644]
lib/connect.c
lib/dict.c
lib/easy.c
lib/file.c
lib/formdata.c
lib/ftp.c
lib/getenv.c
lib/hostthre.c
lib/http.c
lib/if2ip.c
lib/ldap.c
lib/mprintf.c
lib/setup.h
lib/strerror.c
lib/telnet.c
lib/transfer.c
lib/url.c

diff --git a/CHANGES b/CHANGES
index 195faa2917d690453ba4fddddc51e4393dd8bbb4..7112294f31719ea0cc547ee1c1f149c18f4074f2 100644 (file)
--- a/CHANGES
+++ b/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.
index c631fc119e618cc916044b092c76dc6d5e237ad6..ca2c78eb3ce9fab93624459af1dcba4a6e9c1381 100644 (file)
@@ -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 */
index da9df2e153adbadf3d8bf26acb1f76b83e884687..65b672d2cab3bf59fb7ee698410e24053614ca4a 100644 (file)
@@ -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 */
index d7f9f7d44b37a5a5711ab66c878ac86877b5004e..d5cca407fa95dd075c67456a198b1e06b242a31c 100644 (file)
@@ -24,14 +24,14 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 
 DSP = curllib.dsp
 
-EXTRA_DIST = Makefile.b32 Makefile.m32 \
+EXTRA_DIST = Makefile.b32 Makefile.m32                                 \
   Makefile.vc6 Makefile.riscos libcurl.def $(DSP) curllib.dsw          \
   config-vms.h config-win32.h config-riscos.h config-mac.h config.h.in \
   ca-bundle.crt README.encoding README.memoryleak README.ares          \
   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
+  makefile.amiga Makefile.netware nwlib.c libcurl.imp                  \
+  msvcproj.head msvcproj.foot config-win32ce.h
 
 CLEANFILES = $(DSP)
 
diff --git a/lib/config-win32ce.h b/lib/config-win32ce.h
new file mode 100644 (file)
index 0000000..e217d4c
--- /dev/null
@@ -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
index 5d464acbdf677c588d2fc6b325130377b1d531ca..c61301ad2a150cefb8859cbd863cef2febea3075 100644 (file)
@@ -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;
index 1b3f00452e8c6f8467e5d9b4e82aff5345649f7b..f8e402bcfb7c25c4af31ae21e59e98d259dc3ab5 100644 (file)
 #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>
 
index 228d2aef06229cbdc8836bacca6b55c5541e5b1f..7a8278dd8ac80a11c45de3ac8de3e836584ec0b9 100644 (file)
 #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;
index 6d6287d74941d78aa1745b36f24bbd20fb92fe3f..7831d2ef22d0bbe34e158ba455b07e41bbaa679c 100644 (file)
 #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
index 442c306f500095487f34db76571c0800a7cbb7ad..fa26ebbe5c9559cb1047ae0c624a0d4506c88bd0 100644 (file)
@@ -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
index e20514047e2a50680e40232482698b57a5421fde..f056dd81fe75183e5acc80589dc6c2502128a59c 100644 (file)
--- a/lib/ftp.c
+++ b/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) {
index 8f8311bf02021aaafe73b1229ec2c03d5239728b..fbf37a992a98969e4f31a035ac565f610fcef92b 100644 (file)
@@ -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)
index fad335b45776ff66db35d93e507dd16b8ce515e6..2d70f2ef4bad875b4170ed4a984ce63ceed52235 100644 (file)
@@ -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;
index ee5b81ff6d252228fbc2ca5d797068fd6d6ed56a..1de316b2fbabd2fc2eb336b8afe30b108968e2ea 100644 (file)
 #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>
 
index 96ecc53480957107dd0dec4fe5d4c9dbf27d9652..8f0a07782fb923a1a345d79c076041ac3b9385a0 100644 (file)
@@ -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;
index e140f4ffa8024b089ce142c9b220b0a959a43a20..c6f7e5490da8cbc31b39f864ca2d3e1e869131c8 100644 (file)
 #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)
index 9135a1308728104e173c82501c8cfe706cadeccc..629a9e07cedb0118fc5fe5c89f25e74cc0c7a7f2 100644 (file)
 
 #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;
index c6ee81181282391af8f912c3fffdda2284a216c2..f121b7320c60760f1cee4761e162374b2de673c6 100644 (file)
 #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>
index dd5acc81b10d143f0418ca1a24eb21f9f4874c50..fa84a17319bb12db4ca6ac08af690627de07ddbd 100644 (file)
@@ -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,
-                        LANG_NEUTRAL, buf, max, NULL))
+    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 */
index b0f74bb8dd97d1ba512368ef28f237a4f3a1e3be..c2813fa2a23c219fd3d5087f4b081d24758ed6b0 100644 (file)
 #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)
index 904dbd15b40c638c354a7ef4aab3ca0216a4cd2d..389ed6e16e350e6bba7c99bed39df02c5b015e79 100644 (file)
@@ -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>
 
index e84d054895db677219830ab8cd2a7ed5b9180a08..c474bdcab7b11cd5206ed03283147d030efec815 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
 #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) && !defined(__GNUC__) || defined(__MINGW32__)