diff options
author | tarui <tarui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-01-31 17:31:18 +0000 |
---|---|---|
committer | tarui <tarui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-01-31 17:31:18 +0000 |
commit | fb672259d926027f4af16847a1aafe8c81506625 (patch) | |
tree | 9147c8569dfc03758a9a136c6a8be423dd74b87d /win32 | |
parent | b32992e84c5d9c76a4d60d839b4a6f059bad0b52 (diff) |
* include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop.
inet_ntop's minimum supported client is Vista.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r-- | win32/win32.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/win32/win32.c b/win32/win32.c index 6366d921ed..ef7acce6ca 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -5687,3 +5687,19 @@ signbit(double x) return *ip < 0; } #endif + +char * WSAAPI +rb_w32_inet_ntop(int af, void *addr, char *numaddr, size_t numaddr_len) +{ + typedef char *(WSAAPI inet_ntop_t)(int, void *, char *, size_t); + inet_ntop_t *pInetNtop; + pInetNtop = (inet_ntop_t *)get_proc_address("ws2_32", "inet_ntop", NULL); + if(pInetNtop){ + return pInetNtop(af,addr,numaddr,numaddr_len); + }else{ + struct in_addr in; + memcpy(&in.s_addr, addr, sizeof(in.s_addr)); + snprintf(numaddr, numaddr_len, "%s", inet_ntoa(in)); + } + return numaddr; +} |