Check for <wspiapi.h> and use it if present
authorTor Lillqvist <tml@iki.fi>
Mon, 14 Dec 2009 01:09:46 +0000 (03:09 +0200)
committerTor Lillqvist <tml@iki.fi>
Mon, 14 Dec 2009 01:09:46 +0000 (03:09 +0200)
Should help bug #603527 if glib is built in an environment that has
<wspiapi.h>.

config.h.win32.in
configure.in
gio/gwin32resolver.c

index 104cd9d..d72ad80 100644 (file)
 /* Have a working bcopy */
 /* #undef HAVE_WORKING_BCOPY */
 
+/* Define to 1 if you have the <wspiapi.h> header file. */
+#ifndef _MSC_VER
+/* #undef HAVE_WSPIAPI_H */
+#else
+#define HAVE_WSPIAPI_H 1
+#endif
+
 /* Define to 1 if xattr is available */
 /* #undef HAVE_XATTR */
 
index 723311f..f7b1a0a 100644 (file)
@@ -1006,7 +1006,7 @@ if $glib_failed ; then
 fi
 
 AC_CHECK_FUNCS(getprotobyname_r endservent)
-AC_CHECK_HEADERS([netdb.h winsock2.h mswsock.h])
+AC_CHECK_HEADERS([netdb.h winsock2.h mswsock.h wspiapi.h])
 
 # For gio/libasyncns
 if test $glib_native_win32 = no; then
index 5198b95..13cb45e 100644 (file)
 #include "gsimpleasyncresult.h"
 #include "gsocketaddress.h"
 
+#ifdef HAVE_WSPIAPI_H
+/* <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
+ * inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if
+ * they aren't present at run-time (on Windows 2000).
+ */
+#include <wspiapi.h>
+#endif
+
 #include "gioalias.h"
 
 G_DEFINE_TYPE (GWin32Resolver, g_win32_resolver, G_TYPE_THREADED_RESOLVER)