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

ruby-changes:9730

From: akr <ko1@a...>
Date: Fri, 2 Jan 2009 17:23:14 +0900 (JST)
Subject: [ruby-changes:9730] Ruby:r21271 (trunk): * ext/socket/mkconstants.rb: use ID in the values of

akr	2009-01-02 17:22:36 +0900 (Fri, 02 Jan 2009)

  New Revision: 21271

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

  Log:
    * ext/socket/mkconstants.rb: use ID in the values of
      family_to_str_hash.  family_to_str returns a VALUE.
    * ext/socket/socket.c (ipaddr): follow family_to_str change.

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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 21270)
+++ ChangeLog	(revision 21271)
@@ -1,3 +1,10 @@
+Fri Jan  2 17:20:31 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/mkconstants.rb: use ID in the values of
+	  family_to_str_hash.  family_to_str returns a VALUE.
+
+	* ext/socket/socket.c (ipaddr): follow family_to_str change.
+
 Fri Jan  2 17:01:51 2009  Tanaka Akira  <akr@f...>
 
 	* ext/socket/mkconstants.rb: refactored to gather stringizer
Index: ext/socket/mkconstants.rb
===================================================================
--- ext/socket/mkconstants.rb	(revision 21270)
+++ ext/socket/mkconstants.rb	(revision 21271)
@@ -121,31 +121,36 @@
     }
 EOS
 
+def reverse_each_name_with_prefix_optional(pat, prefix_pat)
+  reverse_each_name(pat) {|n|
+    yield n, n
+  }
+  if prefix_pat
+    reverse_each_name(pat) {|n|
+      next if prefix_pat !~ n
+      yield n, $'
+    }
+  end
+end
+
+
 ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_int_to_name_hash(hash_var, pat, prefix_pat)")
     <%=hash_var%> = st_init_numtable();
-% reverse_each_name(pat) {|n|
+% reverse_each_name_with_prefix_optional(pat, prefix_pat) {|n,s|
 #ifdef <%=n%>
-    st_insert(<%=hash_var%>, (st_data_t)<%=n%>, (st_data_t)<%=c_str n%>);
+    st_insert(<%=hash_var%>, (st_data_t)<%=n%>, (st_data_t)rb_intern2(<%=c_str s%>, <%=s.bytesize%>));
 #endif
 % }
-% if prefix_pat
-%  reverse_each_name(pat) {|n|
-%   next if prefix_pat !~ n
-#ifdef <%=n%>
-    st_insert(<%=hash_var%>, (st_data_t)<%=n%>, (st_data_t)<%=c_str $'%>);
-#endif
-%  }
-% end
 EOS
 
 ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_int_to_name_func(func_name, hash_var)")
-static char *
+static VALUE
 <%=func_name%>(int val)
 {
     st_data_t name;
     if (st_lookup(<%=hash_var%>, (st_data_t)val, &name))
-        return (char*)name;
-    return NULL;
+        return rb_id2str((ID)name);
+    return Qnil;
 }
 EOS
 
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c	(revision 21270)
+++ ext/socket/socket.c	(revision 21271)
@@ -1061,11 +1061,11 @@
     VALUE ary;
     int error;
     char hbuf[1024], pbuf[1024];
-    char *name;
 
-    name = family_to_str(sockaddr->sa_family);
-    if (name)
-        family = rb_str_new2(name);
+    family = family_to_str(sockaddr->sa_family);
+    if (!NIL_P(family)) {
+        family = rb_str_dup(family);
+    }
     else {
         sprintf(pbuf, "unknown:%d", sockaddr->sa_family);
 	family = rb_str_new2(pbuf);

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

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