diff options
author | glx <glx@openttd.org> | 2009-04-02 23:22:59 +0000 |
---|---|---|
committer | glx <glx@openttd.org> | 2009-04-02 23:22:59 +0000 |
commit | 521bf687eef36e7c06d09ee610134eb21fed69a9 (patch) | |
tree | 259d66dea30dd7eb129263a1dbf93ba07fa59839 | |
parent | beef5da970ba9571aa5673b53cad5edb8b065a2b (diff) | |
download | openttd-521bf687eef36e7c06d09ee610134eb21fed69a9.tar.xz |
(svn r15919) -Fix (r15916): mingw doesn't know getnameinfo() (unless you compile for XP SP2+). Also fix a MSVC warning.
-rw-r--r-- | src/network/core/os_abstraction.h | 19 | ||||
-rw-r--r-- | src/network/core/tcp_content.h | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/network/core/os_abstraction.h b/src/network/core/os_abstraction.h index 8d5723639..c54189e9e 100644 --- a/src/network/core/os_abstraction.h +++ b/src/network/core/os_abstraction.h @@ -23,6 +23,25 @@ /* Windows has some different names for some types */ typedef SSIZE_T ssize_t; typedef int socklen_t; +#else +#include "../../win32.h" + +static inline int OTTDgetnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, DWORD hostlen, char *serv, DWORD servlen, int flags) +{ + static int (WINAPI *getnameinfo)(const struct sockaddr *, socklen_t, char *, DWORD, char *, DWORD, int) = NULL; + static bool first_time = true; + + if (first_time) { + LoadLibraryList((Function*)&getnameinfo, "ws2_32.dll\0getnameinfo\0\0"); + first_time = false; + } + + if (getnameinfo != NULL) return getnameinfo(sa, salen, host, hostlen, serv, servlen, flags); + + strncpy(host, inet_ntoa(((struct sockaddr_in *)sa)->sin_addr), hostlen); + return 0; +} +#define getnameinfo OTTDgetnameinfo #endif #define GET_LAST_ERROR() WSAGetLastError() diff --git a/src/network/core/tcp_content.h b/src/network/core/tcp_content.h index 8313c733b..50365c109 100644 --- a/src/network/core/tcp_content.h +++ b/src/network/core/tcp_content.h @@ -101,7 +101,7 @@ struct ContentInfo { /** Base socket handler for all Content TCP sockets */ class NetworkContentSocketHandler : public NetworkTCPSocketHandler { protected: - struct NetworkAddress client_addr; ///< The address we're connected to. + NetworkAddress client_addr; ///< The address we're connected to. virtual void Close(); /** |