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/