Skip to content

Commit

Permalink
Paul Nolan fix to make libcurl build nicely on Windows CE
Browse files Browse the repository at this point in the history
  • Loading branch information
bagder committed Nov 2, 2004
1 parent 8a66584 commit 24d47a6
Show file tree
Hide file tree
Showing 22 changed files with 385 additions and 20 deletions.
3 changes: 3 additions & 0 deletions CHANGES
Expand Up @@ -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.
Expand Down
6 changes: 6 additions & 0 deletions include/curl/curl.h
Expand Up @@ -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 */
Expand Down
3 changes: 2 additions & 1 deletion include/curl/multi.h
Expand Up @@ -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 */
Expand Down
6 changes: 3 additions & 3 deletions lib/Makefile.am
Expand Up @@ -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)

Expand Down
258 changes: 258 additions & 0 deletions lib/config-win32ce.h
@@ -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
13 changes: 13 additions & 0 deletions lib/connect.c
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
4 changes: 4 additions & 0 deletions lib/dict.c
Expand Up @@ -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>

Expand Down
9 changes: 9 additions & 0 deletions lib/easy.c
Expand Up @@ -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>

Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 24d47a6

Please sign in to comment.