summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authortarui <tarui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-01-31 17:31:18 +0000
committertarui <tarui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-01-31 17:31:18 +0000
commitfb672259d926027f4af16847a1aafe8c81506625 (patch)
tree9147c8569dfc03758a9a136c6a8be423dd74b87d /win32
parentb32992e84c5d9c76a4d60d839b4a6f059bad0b52 (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.c16
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;
+}