From b2f430898053258622eebee3328f03441367a32c Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Tue, 27 Oct 2009 16:38:42 +0000 Subject: [PATCH] Fix Pelles C Win32 target compilation issues --- ares/config-win32.h | 70 ++++++++++++++++++++++++++++++++++++------------- ares/setup.h | 6 +++++ lib/amigaos.c | 8 +++++- lib/config-win32.h | 66 ++++++++++++++++++++++++++++++++++++---------- lib/easy.c | 4 +-- lib/nwlib.c | 8 +++++- lib/nwos.c | 8 ++++-- lib/setup.h | 19 ++++---------- src/config-win32.h | 75 ++++++++++++++++++++++++++++++++++++++++++----------- src/main.c | 28 +++++++++++++++----- 10 files changed, 218 insertions(+), 74 deletions(-) diff --git a/ares/config-win32.h b/ares/config-win32.h index 6f2fbc2..7499f3c 100644 --- a/ares/config-win32.h +++ b/ares/config-win32.h @@ -25,13 +25,18 @@ /* ---------------------------------------------------------------- */ /* Define if you have the header file. */ -#if defined(__MINGW32__) +#if defined(__MINGW32__) || defined(__POCC__) #define HAVE_GETOPT_H 1 #endif /* Define if you have the header file. */ #define HAVE_LIMITS_H 1 +/* Define if you have the header file. */ +#ifndef __SALFORDC__ +#define HAVE_PROCESS_H 1 +#endif + /* Define if you have the header file. */ #define HAVE_SIGNAL_H 1 @@ -41,9 +46,6 @@ /* Define if you have the header file. */ #define HAVE_TIME_H 1 -/* Define if you have the header file. */ -#define HAVE_PROCESS_H 1 - /* Define if you have the header file. */ #if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ defined(__POCC__) @@ -57,10 +59,14 @@ #define HAVE_WINSOCK_H 1 /* Define if you have the header file. */ +#ifndef __SALFORDC__ #define HAVE_WINSOCK2_H 1 +#endif /* Define if you have the header file. */ +#ifndef __SALFORDC__ #define HAVE_WS2TCPIP_H 1 +#endif /* ---------------------------------------------------------------- */ /* OTHER HEADER INFO */ @@ -79,6 +85,9 @@ /* FUNCTIONS */ /* ---------------------------------------------------------------- */ +/* Define if you have the gethostname function. */ +#define HAVE_GETHOSTNAME 1 + /* Define if you have the ioctlsocket function. */ #define HAVE_IOCTLSOCKET 1 @@ -100,9 +109,6 @@ /* Define if you have the strnicmp function. */ #define HAVE_STRNICMP 1 -/* Define if you have the gethostname function. */ -#define HAVE_GETHOSTNAME 1 - /* Define if you have the recv function. */ #define HAVE_RECV 1 @@ -197,14 +203,16 @@ /* Define ssize_t if it is not an available 'typedefed' type */ #ifndef _SSIZE_T_DEFINED -#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__) || \ - defined(__MINGW32__) -#elif defined(_WIN64) -#define ssize_t __int64 -#else -#define ssize_t int -#endif -#define _SSIZE_T_DEFINED +# if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \ + defined(__POCC__) || \ + defined(__MINGW32__) +# elif defined(_WIN64) +# define _SSIZE_T_DEFINED +# define ssize_t __int64 +# else +# define _SSIZE_T_DEFINED +# define ssize_t int +# endif #endif /* ---------------------------------------------------------------- */ @@ -215,7 +223,9 @@ #define HAVE_STRUCT_ADDRINFO 1 /* Define this if you have struct sockaddr_storage */ +#ifndef __SALFORDC__ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 +#endif /* Define this if you have struct timeval */ #define HAVE_STRUCT_TIMEVAL 1 @@ -260,10 +270,25 @@ # endif #endif -/* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is quite */ -/* convoluted, compiler dependant and in some cases even build target dependat. */ +/* When no build target is specified Pelles C 5.00 and later default build + target is Windows Vista. We override default target to be Windows 2000. */ +#if defined(__POCC__) && (__POCC__ >= 500) +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0500 +# endif +# ifndef WINVER +# define WINVER 0x0500 +# endif +#endif + +/* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is + quite convoluted, compiler dependent and even build target dependent. */ #if defined(HAVE_WS2TCPIP_H) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) +# if defined(__POCC__) +# define HAVE_FREEADDRINFO 1 +# define HAVE_GETADDRINFO 1 +# define HAVE_GETNAMEINFO 1 +# elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) # define HAVE_FREEADDRINFO 1 # define HAVE_GETADDRINFO 1 # define HAVE_GETNAMEINFO 1 @@ -274,6 +299,15 @@ # endif #endif +#if defined(__POCC__) +# ifndef _MSC_VER +# error Microsoft extensions /Ze compiler option is required +# endif +# ifndef __POCC__OLDNAMES +# error Compatibility names /Go compiler option is required +# endif +#endif + /* ---------------------------------------------------------------- */ /* IPV6 COMPATIBILITY */ /* ---------------------------------------------------------------- */ diff --git a/ares/setup.h b/ares/setup.h index 69ee510..e15e999 100644 --- a/ares/setup.h +++ b/ares/setup.h @@ -147,6 +147,12 @@ #endif /* HAVE_CONFIG_H */ +#ifdef __POCC__ +# include +# include +# define ESRCH 3 +#endif + /* * Recent autoconf versions define these symbols in ares_config.h. We don't * want them (since they collide with the libcurl ones when we build diff --git a/lib/amigaos.c b/lib/amigaos.c index c7438a4..0e3445d 100644 --- a/lib/amigaos.c +++ b/lib/amigaos.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -72,4 +72,10 @@ BOOL amiga_init() ADD2EXIT(amiga_cleanup,-50); #endif +#else /* __AMIGA__ */ + +#ifdef __POCC__ +# pragma warn(disable:2024) /* Disable warning #2024: Empty input file */ +#endif + #endif /* __AMIGA__ */ diff --git a/lib/config-win32.h b/lib/config-win32.h index dd81ee1..dbc44ee 100644 --- a/lib/config-win32.h +++ b/lib/config-win32.h @@ -34,7 +34,7 @@ #define HAVE_LIMITS_H 1 /* Define if you need the malloc.h header file even with stdlib.h */ -#ifndef __SALFORDC__ +#if !defined(__SALFORDC__) && !defined(__POCC__) #define NEED_MALLOC_H 1 #endif @@ -82,7 +82,7 @@ /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 -/* Define if you have the header file */ +/* Define if you have the header file. */ #ifndef __BORLANDC__ #define HAVE_SYS_UTIME_H 1 #endif @@ -108,11 +108,13 @@ /* Define if you have the header file. */ #define HAVE_WINSOCK_H 1 -#ifndef __SALFORDC__ /* Define if you have the header file. */ +#ifndef __SALFORDC__ #define HAVE_WINSOCK2_H 1 +#endif /* Define if you have the header file. */ +#ifndef __SALFORDC__ #define HAVE_WS2TCPIP_H 1 #endif @@ -315,14 +317,16 @@ /* Define ssize_t if it is not an available 'typedefed' type */ #ifndef _SSIZE_T_DEFINED -#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__) || \ - defined(__MINGW32__) -#elif defined(_WIN64) -#define ssize_t __int64 -#else -#define ssize_t int -#endif -#define _SSIZE_T_DEFINED +# if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \ + defined(__POCC__) || \ + defined(__MINGW32__) +# elif defined(_WIN64) +# define _SSIZE_T_DEFINED +# define ssize_t __int64 +# else +# define _SSIZE_T_DEFINED +# define ssize_t int +# endif #endif /* ---------------------------------------------------------------- */ @@ -437,11 +441,25 @@ # endif #endif +/* When no build target is specified Pelles C 5.00 and later default build + target is Windows Vista. We override default target to be Windows 2000. */ +#if defined(__POCC__) && (__POCC__ >= 500) +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0500 +# endif +# ifndef WINVER +# define WINVER 0x0500 +# endif +#endif + /* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is - quite convoluted, compiler dependant and in some cases even build target - dependant. */ + quite convoluted, compiler dependent and even build target dependent. */ #if defined(HAVE_WS2TCPIP_H) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) +# if defined(__POCC__) +# define HAVE_FREEADDRINFO 1 +# define HAVE_GETADDRINFO 1 +# define HAVE_GETNAMEINFO 1 +# elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) # define HAVE_FREEADDRINFO 1 # define HAVE_GETADDRINFO 1 # define HAVE_GETNAMEINFO 1 @@ -452,6 +470,15 @@ # endif #endif +#if defined(__POCC__) +# ifndef _MSC_VER +# error Microsoft extensions /Ze compiler option is required +# endif +# ifndef __POCC__OLDNAMES +# error Compatibility names /Go compiler option is required +# endif +#endif + /* ---------------------------------------------------------------- */ /* LARGE FILE SUPPORT */ /* ---------------------------------------------------------------- */ @@ -468,6 +495,10 @@ # define USE_WIN32_LARGE_FILES #endif +#if defined(__POCC__) +# undef USE_WIN32_LARGE_FILES +#endif + #if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES) # define USE_WIN32_SMALL_FILES #endif @@ -491,6 +522,10 @@ #define CURL_LDAP_WIN 1 #endif +#if defined(__POCC__) && defined(CURL_LDAP_WIN) +# define CURL_DISABLE_LDAP 1 +#endif + /* ---------------------------------------------------------------- */ /* ADDITIONAL DEFINITIONS */ /* ---------------------------------------------------------------- */ @@ -510,5 +545,8 @@ /* Name of package */ #define PACKAGE "curl" +#if defined(__POCC__) +# define ENABLE_IPV6 1 +#endif #endif /* __LIB_CONFIG_WIN32_H */ diff --git a/lib/easy.c b/lib/easy.c index ff808f9..0fee13f 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -206,7 +206,7 @@ static long init_flags; #define system_strdup strdup #endif -#if defined(_MSC_VER) && defined(_DLL) +#if defined(_MSC_VER) && defined(_DLL) && !defined(__POCC__) # pragma warning(disable:4232) /* MSVC extension, dllimport identity */ #endif @@ -232,7 +232,7 @@ curl_strdup_callback Curl_cstrdup; curl_calloc_callback Curl_ccalloc; #endif -#if defined(_MSC_VER) && defined(_DLL) +#if defined(_MSC_VER) && defined(_DLL) && !defined(__POCC__) # pragma warning(default:4232) /* MSVC extension, dllimport identity */ #endif diff --git a/lib/nwlib.c b/lib/nwlib.c index 185042b..cb1c5dd 100644 --- a/lib/nwlib.c +++ b/lib/nwlib.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -319,4 +319,10 @@ int main ( void ) #endif /* __NOVELL_LIBC__ */ +#else /* NETWARE */ + +#ifdef __POCC__ +# pragma warn(disable:2024) /* Disable warning #2024: Empty input file */ +#endif + #endif /* NETWARE */ diff --git a/lib/nwos.c b/lib/nwos.c index d9bfcf1..399580c 100644 --- a/lib/nwos.c +++ b/lib/nwos.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -87,6 +87,10 @@ int __deinit_environment ( void ) #endif /* __NOVELL_LIBC__ */ -#endif /* NETWARE */ +#else /* NETWARE */ +#ifdef __POCC__ +# pragma warn(disable:2024) /* Disable warning #2024: Empty input file */ +#endif +#endif /* NETWARE */ diff --git a/lib/setup.h b/lib/setup.h index 7efc610..5f0de90 100644 --- a/lib/setup.h +++ b/lib/setup.h @@ -255,19 +255,10 @@ #include #endif -/* - * PellesC kludge section (yikes); - * - It has 'ssize_t', but it is in . The way the headers - * on Win32 are included, forces me to include this header here. - * - sys_nerr, EINTR is missing in v4.0 or older. - */ #ifdef __POCC__ - #include - #include - #if (__POCC__ <= 400) - #define sys_nerr EILSEQ /* for strerror.c */ - #define EINTR -1 /* for select.c */ - #endif +# include +# include +# define sys_nerr EILSEQ #endif /* @@ -427,7 +418,7 @@ * are available if PSDK is properly installed. */ -#ifdef _MSC_VER +#if defined(_MSC_VER) && !defined(__POCC__) # if !defined(HAVE_WINSOCK2_H) || ((_MSC_VER < 1300) && !defined(IPPROTO_ESP)) # undef HAVE_STRUCT_SOCKADDR_STORAGE # endif @@ -438,7 +429,7 @@ * defined in ws2tcpip.h as well as to provide IPv6 support. */ -#ifdef _MSC_VER +#if defined(_MSC_VER) && !defined(__POCC__) # if !defined(HAVE_WS2TCPIP_H) || ((_MSC_VER < 1300) && !defined(INET6_ADDRSTRLEN)) # undef HAVE_FREEADDRINFO # undef HAVE_GETADDRINFO diff --git a/src/config-win32.h b/src/config-win32.h index 8311fe7..ccd5896 100644 --- a/src/config-win32.h +++ b/src/config-win32.h @@ -21,25 +21,34 @@ /* Define if you have the header file. */ #define HAVE_LOCALE_H 1 +/* Define if you need the malloc.h header file even with stdlib.h */ +#if !defined(__SALFORDC__) && !defined(__POCC__) +#define NEED_MALLOC_H 1 +#endif + /* Define if you have the header file. */ #define HAVE_SIGNAL_H 1 +/* Define if you have the header file. */ +#define HAVE_STDLIB_H 1 + /* Define if you have the header file */ /* #define HAVE_SYS_TIME_H 1 */ /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 -/* Define if you have the header file. */ -#define HAVE_TIME_H 1 - /* Define if you have the header file. */ #ifndef __BORLANDC__ #define HAVE_SYS_UTIME_H 1 #endif +/* Define if you have the header file. */ +#define HAVE_TIME_H 1 + /* Define if you have the header file. */ -#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) +#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__POCC__) #define HAVE_UNISTD_H 1 #endif @@ -50,10 +59,14 @@ #define HAVE_WINSOCK_H 1 /* Define if you have the header file. */ +#ifndef __SALFORDC__ #define HAVE_WINSOCK2_H 1 +#endif /* Define if you have the header file. */ +#ifndef __SALFORDC__ #define HAVE_WS2TCPIP_H 1 +#endif /* ---------------------------------------------------------------- */ /* OTHER HEADER INFO */ @@ -182,14 +195,16 @@ /* Define ssize_t if it is not an available 'typedefed' type */ #ifndef _SSIZE_T_DEFINED -#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__) || \ - defined(__MINGW32__) -#elif defined(_WIN64) -#define ssize_t __int64 -#else -#define ssize_t int -#endif -#define _SSIZE_T_DEFINED +# if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \ + defined(__POCC__) || \ + defined(__MINGW32__) +# elif defined(_WIN64) +# define _SSIZE_T_DEFINED +# define ssize_t __int64 +# else +# define _SSIZE_T_DEFINED +# define ssize_t int +# endif #endif /* ---------------------------------------------------------------- */ @@ -297,11 +312,25 @@ # endif #endif +/* When no build target is specified Pelles C 5.00 and later default build + target is Windows Vista. We override default target to be Windows 2000. */ +#if defined(__POCC__) && (__POCC__ >= 500) +# ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0500 +# endif +# ifndef WINVER +# define WINVER 0x0500 +# endif +#endif + /* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is - quite convoluted, compiler dependant and in some cases even build target - dependant. */ + quite convoluted, compiler dependent and even build target dependent. */ #if defined(HAVE_WS2TCPIP_H) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) +# if defined(__POCC__) +# define HAVE_FREEADDRINFO 1 +# define HAVE_GETADDRINFO 1 +# define HAVE_GETNAMEINFO 1 +# elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) # define HAVE_FREEADDRINFO 1 # define HAVE_GETADDRINFO 1 # define HAVE_GETNAMEINFO 1 @@ -312,6 +341,15 @@ # endif #endif +#if defined(__POCC__) +# ifndef _MSC_VER +# error Microsoft extensions /Ze compiler option is required +# endif +# ifndef __POCC__OLDNAMES +# error Compatibility names /Go compiler option is required +# endif +#endif + /* ---------------------------------------------------------------- */ /* LARGE FILE SUPPORT */ /* ---------------------------------------------------------------- */ @@ -328,6 +366,10 @@ # define USE_WIN32_LARGE_FILES #endif +#if defined(__POCC__) +# undef USE_WIN32_LARGE_FILES +#endif + #if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES) # define USE_WIN32_SMALL_FILES #endif @@ -344,5 +386,8 @@ /* Define to 1 if you want the built-in manual */ #define USE_MANUAL 1 +#if defined(__POCC__) +# define ENABLE_IPV6 1 +#endif #endif /* __SRC_CONFIG_WIN32_H */ diff --git a/src/main.c b/src/main.c index 4462b7d..fed1e1f 100644 --- a/src/main.c +++ b/src/main.c @@ -264,10 +264,12 @@ typedef enum { #ifdef WIN32 # include -# define F_OK 0 # define mkdir(x,y) (mkdir)(x) # undef PATH_MAX # define PATH_MAX MAX_PATH +# ifndef __POCC__ +# define F_OK 0 +# endif #endif /* @@ -407,18 +409,29 @@ char convert_char(curl_infotype infotype, char this_char) #endif /* CURL_DOES_CONVERSIONS */ #ifdef WIN32 -/* - * Truncate a file handle at a 64-bit position 'where'. - * Borland doesn't even support 64-bit types. - */ + #ifdef __BORLANDC__ -#define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence) + /* 64-bit lseek-like function unavailable */ +# define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence) +#endif + +#ifdef __POCC__ +# if (__POCC__ < 450) + /* 64-bit lseek-like function unavailable */ +# define _lseeki64(hnd,ofs,whence) _lseek(hnd,ofs,whence) +# else +# define _lseeki64(hnd,ofs,whence) _lseek64(hnd,ofs,whence) +# endif #endif #ifndef HAVE_FTRUNCATE #define HAVE_FTRUNCATE 1 #endif +/* + * Truncate a file handle at a 64-bit position 'where'. + */ + static int ftruncate64 (int fd, curl_off_t where) { if(_lseeki64(fd, where, SEEK_SET) < 0) @@ -430,7 +443,8 @@ static int ftruncate64 (int fd, curl_off_t where) return 0; } #define ftruncate(fd,where) ftruncate64(fd,where) -#endif + +#endif /* WIN32 */ typedef enum { TRACE_NONE, /* no trace/verbose output at all! */ -- 2.7.4