ruby-changes:9704
From: akr <ko1@a...>
Date: Thu, 1 Jan 2009 19:54:57 +0900 (JST)
Subject: [ruby-changes:9704] Ruby:r21245 (trunk): * ext/socket/mkconstants.rb: add valp argument for family_to_int and
akr 2009-01-01 19:54:38 +0900 (Thu, 01 Jan 2009) New Revision: 21245 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21245 Log: * ext/socket/mkconstants.rb: add valp argument for family_to_int and socktype_to_int. * ext/socket/socket.c (setup_domain_and_type): use valp argument. Modified files: trunk/ChangeLog trunk/ext/socket/mkconstants.rb trunk/ext/socket/socket.c Index: ChangeLog =================================================================== --- ChangeLog (revision 21244) +++ ChangeLog (revision 21245) @@ -1,3 +1,10 @@ +Thu Jan 1 19:53:33 2009 Tanaka Akira <akr@f...> + + * ext/socket/mkconstants.rb: add valp argument for family_to_int and + socktype_to_int. + + * ext/socket/socket.c (setup_domain_and_type): use valp argument. + Thu Jan 1 19:36:57 2009 Tanaka Akira <akr@f...> * ext/socket/mkconstants.rb: generate family_to_str. Index: ext/socket/mkconstants.rb =================================================================== --- ext/socket/mkconstants.rb (revision 21244) +++ ext/socket/mkconstants.rb (revision 21245) @@ -75,14 +75,14 @@ } end -ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int(str_var, len_var, pat)") +ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int(str_var, len_var, retp_var, pat)") switch (<%=len_var%>) { % each_names_with_len(pat) {|names, len| case <%=len%>: % names.each {|name| #ifdef <%=name%> % size = name.bytesize - if (memcmp(<%=str_var%>, <%=c_str name%>, <%=size%>) == 0) return <%=name%>; + if (memcmp(<%=str_var%>, <%=c_str name%>, <%=size%>) == 0) { *<%=retp_var%> = <%=name%>; return 0; } #endif % } return -1; @@ -153,15 +153,15 @@ } static int -family_to_int(char *str, int len) +family_to_int(char *str, int len, int *valp) { -<%= gen_name_to_int("str", "len", /\A[AP]F_/) %> +<%= gen_name_to_int("str", "len", "valp", /\A[AP]F_/) %> } static int -socktype_to_int(char *str, int len) +socktype_to_int(char *str, int len, int *valp) { -<%= gen_name_to_int("str", "len", /\ASOCK_/) %> +<%= gen_name_to_int("str", "len", "valp", /\ASOCK_/) %> } static char * Index: ext/socket/socket.c =================================================================== --- ext/socket/socket.c (revision 21244) +++ ext/socket/socket.c (revision 21245) @@ -2264,8 +2264,8 @@ } #endif -static int family_to_int(char *str, int len); -static int socktype_to_int(char *str, int len); +static int family_to_int(char *str, int len, int *valp); +static int socktype_to_int(char *str, int len, int *valp); static void setup_domain_and_type(VALUE domain, int *dv, VALUE type, int *tv) @@ -2275,28 +2275,22 @@ tmp = rb_check_string_type(domain); if (!NIL_P(tmp)) { - int family; domain = tmp; rb_check_safe_obj(domain); ptr = RSTRING_PTR(domain); - family = family_to_int(ptr, RSTRING_LEN(domain)); - if (family == -1) + if (family_to_int(ptr, RSTRING_LEN(domain), dv) == -1) rb_raise(rb_eSocket, "unknown socket domain %s", ptr); - *dv = family; } else { *dv = NUM2INT(domain); } tmp = rb_check_string_type(type); if (!NIL_P(tmp)) { - int socktype; type = tmp; rb_check_safe_obj(type); ptr = RSTRING_PTR(type); - socktype = socktype_to_int(ptr, RSTRING_LEN(type)); - if (socktype == -1) + if (socktype_to_int(ptr, RSTRING_LEN(type), tv) == -1) rb_raise(rb_eSocket, "unknown socket type %s", ptr); - *tv = socktype; } else { *tv = NUM2INT(type); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/