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

ruby-changes:9716

From: akr <ko1@a...>
Date: Fri, 2 Jan 2009 00:59:25 +0900 (JST)
Subject: [ruby-changes:9716] Ruby:r21257 (trunk): * ext/socket/socket.c (family_arg): accept symbols as well.

akr	2009-01-02 00:59:10 +0900 (Fri, 02 Jan 2009)

  New Revision: 21257

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21257

  Log:
    * ext/socket/socket.c (family_arg): accept symbols as well.
      (socktype_arg): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/socket.c
    trunk/test/socket/test_socket.rb
    trunk/test/socket/test_udp.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 21256)
+++ ChangeLog	(revision 21257)
@@ -1,3 +1,8 @@
+Fri Jan  2 00:58:40 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/socket.c (family_arg): accept symbols as well.
+	  (socktype_arg): ditto.
+
 Fri Jan  2 00:49:44 2009  Tanaka Akira  <akr@f...>
 
 	* ext/socket/socket.c (sock_s_getaddrinfo): use socktype_arg.
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c	(revision 21256)
+++ ext/socket/socket.c	(revision 21257)
@@ -249,9 +249,13 @@
     char *ptr;
     int ret;
 
-    tmp = rb_check_string_type(domain);
-    if (!NIL_P(tmp)) {
+    if (SYMBOL_P(domain)) {
+        domain = rb_sym_to_s(domain);
+        goto str;
+    }
+    else if (!NIL_P(tmp = rb_check_string_type(domain))) {
 	domain = tmp;
+      str:
 	rb_check_safe_obj(domain);
         ptr = RSTRING_PTR(domain);
         if (family_to_int(ptr, RSTRING_LEN(domain), &ret) == -1)
@@ -271,9 +275,13 @@
     char *ptr;
     int ret;
 
-    tmp = rb_check_string_type(type);
-    if (!NIL_P(tmp)) {
+    if (SYMBOL_P(type)) {
+        type = rb_sym_to_s(type);
+        goto str;
+    }
+    else if (!NIL_P(tmp = rb_check_string_type(type))) {
 	type = tmp;
+      str:
 	rb_check_safe_obj(type);
 	ptr = RSTRING_PTR(type);
         if (socktype_to_int(ptr, RSTRING_LEN(type), &ret) == -1)
Index: test/socket/test_socket.rb
===================================================================
--- test/socket/test_socket.rb	(revision 21256)
+++ test/socket/test_socket.rb	(revision 21257)
@@ -109,6 +109,11 @@
       assert_nothing_raised { Socket.unpack_sockaddr_in(addr) }
       assert_raise(ArgumentError) { Socket.unpack_sockaddr_un(addr) }
     }
+    Socket.open(:AF_INET, :SOCK_STREAM, 0) {|s|
+      addr = s.getsockname
+      assert_nothing_raised { Socket.unpack_sockaddr_in(addr) }
+      assert_raise(ArgumentError) { Socket.unpack_sockaddr_un(addr) }
+    }
   end
 
   def test_getaddrinfo
Index: test/socket/test_udp.rb
===================================================================
--- test/socket/test_udp.rb	(revision 21256)
+++ test/socket/test_udp.rb	(revision 21257)
@@ -10,6 +10,7 @@
     assert_nothing_raised { UDPSocket.open {} }
     assert_nothing_raised { UDPSocket.open(Socket::AF_INET) {} }
     assert_nothing_raised { UDPSocket.open("AF_INET") {} }
+    assert_nothing_raised { UDPSocket.open(:AF_INET) {} }
     if defined? Socket::AF_INET6
       assert_nothing_raised { UDPSocket.open(Socket::AF_INET6) {} }
     end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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