r1444 - in trunk: . code/qcommon

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Aug 9 15:12:30 EDT 2008


Author: tma
Date: 2008-08-09 15:12:30 -0400 (Sat, 09 Aug 2008)
New Revision: 1444

Modified:
   trunk/Makefile
   trunk/README
   trunk/code/qcommon/net_ip.c
Log:
* Use IPv6 header qcommon/wspiapi.h if it has been added by the end user
* Update README to explain the Windows XP requirement


Modified: trunk/Makefile
===================================================================
--- trunk/Makefile	2008-08-09 15:19:59 UTC (rev 1443)
+++ trunk/Makefile	2008-08-09 19:12:30 UTC (rev 1444)
@@ -423,14 +423,10 @@
   BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
     -DUSE_ICON
 
-  # Require Windows XP or later
-  #
-  # IPv6 support requires a header wspiapi.h to work on earlier versions of
-  # windows. There is no MinGW equivalent of this header so we're forced to
-  # require XP. In theory this restriction can be removed if this header is
-  # obtained separately from the platform SDK. The MSVC build does not have
-  # this limitation.
-  BASE_CFLAGS += -DWINVER=0x501
+  # In the absence of wspiapi.h, require Windows XP or later
+  ifeq ($(shell test -e $(CMDIR)/wspiapi.h; echo $$?),1)
+    BASE_CFLAGS += -DWINVER=0x501
+  endif
 
   ifeq ($(USE_OPENAL),1)
     BASE_CFLAGS += -DUSE_OPENAL

Modified: trunk/README
===================================================================
--- trunk/README	2008-08-09 15:19:59 UTC (rev 1443)
+++ trunk/README	2008-08-09 19:12:30 UTC (rev 1444)
@@ -433,7 +433,15 @@
 
   Restart GtkRadiant and PNG textures are now available.
 
+Building with MinGW for pre Windows XP
+  IPv6 support requires a header named "wspiapi.h" to abstract away from
+  differences in earlier versions of Windows' IPv6 stack. There is no MinGW
+  equivalent of this header and the Microsoft version is obviously not
+  redistributable, so in its absence we're forced to require Windows XP.
+  However if this header is acquired separately and placed in the qcommon/
+  directory, this restriction is lifted.
 
+
 ------------------------------------------------------------- Contributing -----
 
 Please send all patches to bugzilla (https://bugzilla.icculus.org), or join the

Modified: trunk/code/qcommon/net_ip.c
===================================================================
--- trunk/code/qcommon/net_ip.c	2008-08-09 15:19:59 UTC (rev 1443)
+++ trunk/code/qcommon/net_ip.c	2008-08-09 19:12:30 UTC (rev 1444)
@@ -24,61 +24,68 @@
 #include "../qcommon/qcommon.h"
 
 #ifdef _WIN32
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#if WINVER < 0x501
-#include <wspiapi.h>
-#else
-#include <ws2spi.h>
-#endif
+#	include <winsock2.h>
+#	include <ws2tcpip.h>
+#	if WINVER < 0x501
+#		ifdef __MINGW32__
+			// wspiapi.h isn't available on MinGW, so if it's
+			// present it's because the end user has added it
+			// and we should look for it in our tree
+#			include "wspiapi.h"
+#		else
+#			include <wspiapi.h>
+#		endif
+#	else
+#		include <ws2spi.h>
+#	endif
 
 typedef int socklen_t;
-#ifdef ADDRESS_FAMILY
-#define sa_family_t	ADDRESS_FAMILY
-#else
+#	ifdef ADDRESS_FAMILY
+#		define sa_family_t	ADDRESS_FAMILY
+#	else
 typedef unsigned short sa_family_t;
-#endif
+#	endif
 
-#define EAGAIN				WSAEWOULDBLOCK
-#define EADDRNOTAVAIL	WSAEADDRNOTAVAIL
-#define EAFNOSUPPORT	WSAEAFNOSUPPORT
-#define ECONNRESET		WSAECONNRESET
-#define socketError		WSAGetLastError( )
+#	define EAGAIN					WSAEWOULDBLOCK
+#	define EADDRNOTAVAIL	WSAEADDRNOTAVAIL
+#	define EAFNOSUPPORT		WSAEAFNOSUPPORT
+#	define ECONNRESET			WSAECONNRESET
+#	define socketError		WSAGetLastError( )
 
 static WSADATA	winsockdata;
 static qboolean	winsockInitialized = qfalse;
 
 #else
 
-#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
-	// needed for socklen_t on OSX 10.2
-#	define _BSD_SOCKLEN_T_
-#endif
+#	if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
+		// needed for socklen_t on OSX 10.2
+#		define _BSD_SOCKLEN_T_
+#	endif
 
-#include <arpa/inet.h>
-#include <errno.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#if !defined(__sun) && !defined(__sgi)
-#include <ifaddrs.h>
-#endif
+#	include <arpa/inet.h>
+#	include <errno.h>
+#	include <netdb.h>
+#	include <netinet/in.h>
+#	include <sys/socket.h>
+#	include <net/if.h>
+#	include <sys/ioctl.h>
+#	include <sys/types.h>
+#	include <sys/time.h>
+#	include <unistd.h>
+#	if !defined(__sun) && !defined(__sgi)
+#		include <ifaddrs.h>
+#	endif
 
-#ifdef __sun
-#include <sys/filio.h>
-#endif
+#	ifdef __sun
+#		include <sys/filio.h>
+#	endif
 
 typedef int SOCKET;
-#define INVALID_SOCKET		-1
-#define SOCKET_ERROR			-1
-#define closesocket				close
-#define ioctlsocket				ioctl
-#define socketError				errno
+#	define INVALID_SOCKET		-1
+#	define SOCKET_ERROR			-1
+#	define closesocket			close
+#	define ioctlsocket			ioctl
+#	define socketError			errno
 
 #endif
 




More information about the quake3-commits mailing list