[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]