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__ */