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

ruby-changes:10628

From: akr <ko1@a...>
Date: Mon, 9 Feb 2009 23:24:03 +0900 (JST)
Subject: [ruby-changes:10628] Ruby:r22186 (trunk): * ext/socket/constants.c (level_arg): use unknown_level_to_int for

akr	2009-02-09 23:23:53 +0900 (Mon, 09 Feb 2009)

  New Revision: 22186

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

  Log:
    * ext/socket/constants.c (level_arg): use unknown_level_to_int for
      non internet protocol.
      (optname_arg): use only so_optname_to_int for non internet protocol.
      (cmsg_type_arg): use only scm_optname_to_int for non internet
      protocol.
    * ext/socket/mkconstants.rb: generate unknown_level_to_int.
      rename iplevel_to_int to ip_level_to_int.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/constants.c
    trunk/ext/socket/mkconstants.rb
    trunk/ext/socket/rubysocket.h

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22185)
+++ ChangeLog	(revision 22186)
@@ -1,3 +1,14 @@
+Mon Feb  9 23:21:29 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/constants.c (level_arg): use unknown_level_to_int for
+	  non internet protocol.
+	  (optname_arg): use only so_optname_to_int for non internet protocol.
+	  (cmsg_type_arg): use only scm_optname_to_int for non internet
+	  protocol.
+
+	* ext/socket/mkconstants.rb: generate unknown_level_to_int.
+	  rename iplevel_to_int to ip_level_to_int.
+
 Mon Feb  9 23:04:27 2009  Tanaka Akira  <akr@f...>
 
 	* ext/socket/mkconstants.rb: rename level_to_int to iplevel_to_int.
Index: ext/socket/rubysocket.h
===================================================================
--- ext/socket/rubysocket.h	(revision 22185)
+++ ext/socket/rubysocket.h	(revision 22186)
@@ -196,8 +196,8 @@
 int socktype_arg(VALUE type);
 int level_arg(int family, VALUE level);
 int optname_arg(int family, int level, VALUE optname);
+int cmsg_type_arg(int family, int level, VALUE type);
 int shutdown_how_arg(VALUE how);
-int cmsg_type_arg(int family, int level, VALUE type);
 
 int rb_sock_getfamily(int sockfd);
 
Index: ext/socket/constants.c
===================================================================
--- ext/socket/constants.c	(revision 22185)
+++ ext/socket/constants.c	(revision 22186)
@@ -61,58 +61,83 @@
 level_arg(int family, VALUE level)
 {
     /* convert SOL_SOCKET, IPPROTO_TCP, etc. */
-    return constant_arg(level, iplevel_to_int, "unknown protocol level");
+    if (IS_IP_FAMILY(family)) {
+        return constant_arg(level, ip_level_to_int, "unknown protocol level");
+    }
+    else {
+        return constant_arg(level, unknown_level_to_int, "unknown protocol level");
+    }
 }
 
 int
 optname_arg(int family, int level, VALUE optname)
 {
-    switch (level) {
-      case SOL_SOCKET:
-        return constant_arg(optname, so_optname_to_int, "unknown socket level option name");
-      case IPPROTO_IP:
-        return constant_arg(optname, ip_optname_to_int, "unknown IP level option name");
+    if (IS_IP_FAMILY(family)) {
+        switch (level) {
+          case SOL_SOCKET:
+            return constant_arg(optname, so_optname_to_int, "unknown socket level option name");
+          case IPPROTO_IP:
+            return constant_arg(optname, ip_optname_to_int, "unknown IP level option name");
 #ifdef IPPROTO_IPV6
-      case IPPROTO_IPV6:
-        return constant_arg(optname, ipv6_optname_to_int, "unknown IPv6 level option name");
+          case IPPROTO_IPV6:
+            return constant_arg(optname, ipv6_optname_to_int, "unknown IPv6 level option name");
 #endif
-      case IPPROTO_TCP:
-        return constant_arg(optname, tcp_optname_to_int, "unknown TCP level option name");
-      case IPPROTO_UDP:
-        return constant_arg(optname, udp_optname_to_int, "unknown UDP level option name");
-      default:
-        return NUM2INT(optname);
+          case IPPROTO_TCP:
+            return constant_arg(optname, tcp_optname_to_int, "unknown TCP level option name");
+          case IPPROTO_UDP:
+            return constant_arg(optname, udp_optname_to_int, "unknown UDP level option name");
+          default:
+            return NUM2INT(optname);
+        }
     }
+    else {
+        switch (level) {
+          case SOL_SOCKET:
+            return constant_arg(optname, so_optname_to_int, "unknown socket level option name");
+          default:
+            return NUM2INT(optname);
+        }
+    }
 }
 
 int
-shutdown_how_arg(VALUE how)
-{
-    /* convert SHUT_RD, SHUT_WR, SHUT_RDWR. */
-    return constant_arg(how, shutdown_how_to_int, "unknown shutdown argument");
-}
-
-int
 cmsg_type_arg(int family, int level, VALUE type)
 {
-    switch (level) {
-      case SOL_SOCKET:
-        return constant_arg(type, scm_optname_to_int, "unknown UNIX control message");
-      case IPPROTO_IP:
-        return constant_arg(type, ip_optname_to_int, "unknown IP control message");
+    if (IS_IP_FAMILY(family)) {
+        switch (level) {
+          case SOL_SOCKET:
+            return constant_arg(type, scm_optname_to_int, "unknown UNIX control message");
+          case IPPROTO_IP:
+            return constant_arg(type, ip_optname_to_int, "unknown IP control message");
 #ifdef INET6
-      case IPPROTO_IPV6:
-        return constant_arg(type, ipv6_optname_to_int, "unknown IPv6 control message");
+          case IPPROTO_IPV6:
+            return constant_arg(type, ipv6_optname_to_int, "unknown IPv6 control message");
 #endif
-      case IPPROTO_TCP:
-        return constant_arg(type, tcp_optname_to_int, "unknown TCP control message");
-      case IPPROTO_UDP:
-        return constant_arg(type, udp_optname_to_int, "unknown UDP control message");
-      default:
-        return NUM2INT(type);
+          case IPPROTO_TCP:
+            return constant_arg(type, tcp_optname_to_int, "unknown TCP control message");
+          case IPPROTO_UDP:
+            return constant_arg(type, udp_optname_to_int, "unknown UDP control message");
+          default:
+            return NUM2INT(type);
+        }
     }
+    else {
+        switch (level) {
+          case SOL_SOCKET:
+            return constant_arg(type, scm_optname_to_int, "unknown UNIX control message");
+          default:
+            return NUM2INT(type);
+        }
+    }
 }
 
+int
+shutdown_how_arg(VALUE how)
+{
+    /* convert SHUT_RD, SHUT_WR, SHUT_RDWR. */
+    return constant_arg(how, shutdown_how_to_int, "unknown shutdown argument");
+}
+
 static void
 sock_define_const(const char *name, int value, VALUE mConst)
 {
Index: ext/socket/mkconstants.rb
===================================================================
--- ext/socket/mkconstants.rb	(revision 22185)
+++ ext/socket/mkconstants.rb	(revision 22186)
@@ -242,7 +242,8 @@
 def_name_to_int("family_to_int", /\A(AF_|PF_)/, "AF_")
 def_name_to_int("socktype_to_int", /\ASOCK_/, "SOCK_")
 def_name_to_int("ipproto_to_int", /\AIPPROTO_/, "IPPROTO_")
-def_name_to_int("iplevel_to_int", /\A(SOL_SOCKET\z|IPPROTO_)/, /\A(SOL_|IPPROTO_)/)
+def_name_to_int("unknown_level_to_int", /\ASOL_SOCKET\z/, "SOL_")
+def_name_to_int("ip_level_to_int", /\A(SOL_SOCKET\z|IPPROTO_)/, /\A(SOL_|IPPROTO_)/)
 def_name_to_int("so_optname_to_int", /\ASO_/, "SO_")
 def_name_to_int("ip_optname_to_int", /\AIP_/, "IP_")
 def_name_to_int("ipv6_optname_to_int", /\AIPV6_/, "IPV6_", "IPPROTO_IPV6")

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

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