Implemented getaddrinfo(), including full mapping of struct addrinfo
between UNIX and Windows. Based on a patch by Mike Hearn.

diff --git a/include/ws2tcpip.h b/include/ws2tcpip.h
index 8e58bcd..87f7550 100644
--- a/include/ws2tcpip.h
+++ b/include/ws2tcpip.h
@@ -159,4 +159,38 @@
 #define WS_IP_DONTFRAGMENT     14
 #endif /* USE_WS_PREFIX */
 
+/* Possible Windows flags for getaddrinfo() */
+#ifndef USE_WS_PREFIX
+# define AI_PASSIVE     0x0001
+# define AI_CANONNAME   0x0002
+# define AI_NUMERICHOST 0x0004
+/* getaddrinfo error codes */
+# define EAI_AGAIN	WSATRY_AGAIN
+# define EAI_BADFLAGS	WSAEINVAL
+# define EAI_FAIL	WSANO_RECOVERY
+# define EAI_FAMILY	WSAEAFNOSUPPORT
+# define EAI_MEMORY	WSA_NOT_ENOUGH_MEMORY
+# define EAI_NODATA	WSANO_DATA
+# define EAI_NONAME	WSAHOST_NOT_FOUND
+# define EAI_SERVICE	WSATYPE_NOT_FOUND
+# define EAI_SOCKTYPE	WSAESOCKTNOSUPPORT
+#else
+# define WS_AI_PASSIVE     0x0001
+# define WS_AI_CANONNAME   0x0002
+# define WS_AI_NUMERICHOST 0x0004
+/* getaddrinfo error codes */
+# define WS_EAI_AGAIN	WSATRY_AGAIN
+# define WS_EAI_BADFLAGS	WSAEINVAL
+# define WS_EAI_FAIL	WSANO_RECOVERY
+# define WS_EAI_FAMILY	WSAEAFNOSUPPORT
+# define WS_EAI_MEMORY	WSA_NOT_ENOUGH_MEMORY
+# define WS_EAI_NODATA	WSANO_DATA
+# define WS_EAI_NONAME	WSAHOST_NOT_FOUND
+# define WS_EAI_SERVICE	WSATYPE_NOT_FOUND
+# define WS_EAI_SOCKTYPE	WSAESOCKTNOSUPPORT
+#endif
+
+int WINAPI WS(getaddrinfo)(LPCSTR,LPCSTR,const ADDRINFOA *,ADDRINFOA **);
+int WINAPI GetAddrInfoW(LPCWSTR,LPCWSTR,const ADDRINFOW *,ADDRINFOW **);
+
 #endif /* __WS2TCPIP__ */