ruby-changes:18723
From: tarui <ko1@a...>
Date: Tue, 1 Feb 2011 02:36:35 +0900 (JST)
Subject: [ruby-changes:18723] Ruby:r30749 (trunk): * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop.
tarui 2011-02-01 02:31:18 +0900 (Tue, 01 Feb 2011) New Revision: 30749 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30749 Log: * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop. inet_ntop's minimum supported client is Vista. Modified files: trunk/ChangeLog trunk/include/ruby/win32.h trunk/win32/win32.c Index: include/ruby/win32.h =================================================================== --- include/ruby/win32.h (revision 30748) +++ include/ruby/win32.h (revision 30749) @@ -267,6 +267,7 @@ extern char **rb_w32_get_environ(void); extern void rb_w32_free_environ(char **); extern int rb_w32_map_errno(DWORD); +extern char * WSAAPI rb_w32_inet_ntop(int,void *,char *,size_t); extern int chown(const char *, int, int); extern int rb_w32_uchown(const char *, int, int); @@ -542,6 +543,9 @@ #define FD_ISSET(f, s) rb_w32_fdisset(f, s) #ifdef RUBY_EXPORT +#undef inet_ntop +#define inet_ntop(f,a,n,l) rb_w32_inet_ntop(f,a,n,l) + #undef accept #define accept(s, a, l) rb_w32_accept(s, a, l) Index: ChangeLog =================================================================== --- ChangeLog (revision 30748) +++ ChangeLog (revision 30749) @@ -1,3 +1,8 @@ +Tue Feb 1 02:28:14 2011 Masaya Tarui <tarui@r...> + + * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop. + inet_ntop's minimum supported client is Vista. + Tue Feb 1 00:10:30 2011 NARUSE, Yui <naruse@r...> * lib/benchmark.rb: fix benchmarck to work with current ruby. Index: win32/win32.c =================================================================== --- win32/win32.c (revision 30748) +++ win32/win32.c (revision 30749) @@ -5687,3 +5687,19 @@ 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; +} -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/