summaryrefslogtreecommitdiffstats
path: root/ext
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-02 05:12:14 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-02 05:12:14 +0000
commit9baf2a75e9d75833b3554e8327b181444b7ac592 (patch)
tree28b44ea597c661fe7b45a9079378a15a021de1dd /ext
parentb4df610c2733fb8b8a1f431940b4e5d1a58e2d47 (diff)
downloadruby-9baf2a75e9d75833b3554e8327b181444b7ac592.tar.gz
ruby-9baf2a75e9d75833b3554e8327b181444b7ac592.tar.xz
ruby-9baf2a75e9d75833b3554e8327b181444b7ac592.zip
* ext/socket/mkconstants.rb (gen_int_to_name): add lenp argument.
* ext/socket/socket.c (ipaddr): follow argument change. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/socket/mkconstants.rb12
-rw-r--r--ext/socket/socket.c2
2 files changed, 7 insertions, 7 deletions
diff --git a/ext/socket/mkconstants.rb b/ext/socket/mkconstants.rb
index 82718b400..5b5b74105 100644
--- a/ext/socket/mkconstants.rb
+++ b/ext/socket/mkconstants.rb
@@ -103,14 +103,14 @@ def each_alias(pat)
yield names
end
-ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_int_to_name(int_var, pat)")
+ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_int_to_name(int_var, lenp_var, pat)")
switch (<%=int_var%>) {
% each_alias(pat) {|names|
% names.each_with_index {|n, i|
% cond = ["defined(#{n})"]
% (0...i).each {|j| cond << "(!defined(#{names[j]}) || #{n} != #{names[j]})" }
#if <%=cond.join(" && ")%>
- case <%=n%>: return <%=c_str n%>;
+ case <%=n%>: if (<%=lenp_var%>) *<%=lenp_var%> = <%=n.bytesize%>; return <%=c_str n%>;
#endif
% }
% }
@@ -190,9 +190,9 @@ udp_optname_to_int(char *str, int len, int *valp)
}
static char *
-family_to_str(int val)
+family_to_str(int val, int *lenp)
{
-<%= gen_int_to_name("val", /\AAF_/) %>
+<%= gen_int_to_name("val", "lenp", /\AAF_/) %>
}
EOS
@@ -214,6 +214,8 @@ SOCK_RDM
SOCK_SEQPACKET
SOCK_PACKET
+AF_UNSPEC
+PF_UNSPEC
AF_INET
PF_INET
AF_INET6
@@ -226,8 +228,6 @@ AF_IPX
PF_IPX
AF_APPLETALK
PF_APPLETALK
-AF_UNSPEC
-PF_UNSPEC
AF_LOCAL
PF_LOCAL
AF_IMPLINK
diff --git a/ext/socket/socket.c b/ext/socket/socket.c
index b50747a5e..0f6f9e8a0 100644
--- a/ext/socket/socket.c
+++ b/ext/socket/socket.c
@@ -1063,7 +1063,7 @@ ipaddr(struct sockaddr *sockaddr, int norevlookup)
char hbuf[1024], pbuf[1024];
char *name;
- name = family_to_str(sockaddr->sa_family);
+ name = family_to_str(sockaddr->sa_family, NULL);
if (name)
family = rb_str_new2(name);
else {