Hi, On Wed, Nov 09, 2011 at 02:17:09PM +0200, Samuli Seppänen wrote: > Il 26/09/2011 15:37, Heiko Hund ha scritto: > > On Monday 26 September 2011 14:13:30 Samuli Seppänen wrote: > >> Ok, did as suggested for socket.c and win32.h and got the following > >> build failure using MSVC: > >> > >> <http://pastebin.com/xZ8J2yrq> > > ---8<------------------------------------------------------------------ > > c:\users\samuli\openvpn-build\openvpn\win32.h(282) : > > error C2373: 'inet_ntop' : redefinition; different type modifiers > > ---8<------------------------------------------------------------------
after discussions with Samuli and Heiko, I propose to solve this in a different way, namely "always use our own version of inet_ntop/inet_pton, and do not even try to keep the prototypes right on windows". That is, I #define inet_ntop() to openvpn_inet_ntop() and inet_pton() to openvpn_inet_pton(), and thus change all the function calls to call our own function on "#ifdef WIN32" builds. Trying to keep the function names and playing with prototypes didn't lead anywhere, and trying to play with the NTDDI_VERSION defines is far beyond the level of detail I want to know about Windows building. So here's the patch - it compiles (MSVC on Win7), the resulting binary works on WinXP, and it's not too ugly - actually it removes more #ifdef's that it adds... Let me know your comments. gert -- USENET is *not* the non-clickable part of WWW! //www.muc.de/~gert/ Gert Doering - Munich, Germany g...@greenie.muc.de fax: +49-89-35655025 g...@net.informatik.tu-muenchen.de
From 853662a6d1f5ad90e8d73032cea137541f6194e2 Mon Sep 17 00:00:00 2001 From: Gert Doering <g...@greenie.muc.de> List-Post: openvpn-devel@lists.sourceforge.net Date: Thu, 24 Nov 2011 19:48:27 +0100 Subject: [PATCH] work around inet_ntop/inet_pton problems for MSVC builds on WinXP always use our built-in replacement functions now, even if building on Win7 (which has inet_ntop/inet_pton in the system libraries) because the resulting binary will then fail on WinXP. Signed-off-by: Gert Doering <g...@greenie.muc.de> --- socket.c | 3 --- win32.h | 10 ++++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/socket.c b/socket.c index 5302eca..d91f2dc 100644 --- a/socket.c +++ b/socket.c @@ -3085,7 +3085,6 @@ link_socket_write_udp_posix_sendmsg (struct link_socket *sock, * WSAAddressToString() and WSAStringToAddress() functions */ -#ifndef _MSC_VER const char * inet_ntop(int af, const void *src, char *dst, socklen_t size) { @@ -3134,8 +3133,6 @@ inet_pton(int af, const char *src, void *dst) return 0; } -#endif - int socket_recv_queue (struct link_socket *sock, int maxsize) { diff --git a/win32.h b/win32.h index 5b18e3c..0607cad 100644 --- a/win32.h +++ b/win32.h @@ -278,10 +278,12 @@ char *get_win_sys_path (void); /* call self in a subprocess */ void fork_to_self (const char *cmdline); -#ifndef _MSC_VER -const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); -int inet_pton(int af, const char *src, void *st); -#endif + +const char *openvpn_inet_ntop(int af, const void *src, + char *dst, socklen_t size); +int openvpn_inet_pton(int af, const char *src, void *dst); +#define inet_ntop(af,src,dst,size) openvpn_inet_ntop(af,src,dst,size) +#define inet_pton(af,src,dst) openvpn_inet_pton(af,src,dst) /* Find temporary directory */ const char *win_get_tempdir(); -- 1.7.4.4
pgpbka05LsSML.pgp
Description: PGP signature