ruby-changes:32568
From: nobu <ko1@a...>
Date: Sun, 19 Jan 2014 10:11:06 +0900 (JST)
Subject: [ruby-changes:32568] nobu:r44647 (trunk): socket/option.c: socket option variations
nobu 2014-01-19 10:11:01 +0900 (Sun, 19 Jan 2014) New Revision: 44647 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=44647 Log: socket/option.c: socket option variations * ext/socket/option.c (NUM2SOCKOPT, sockopt_value): extract to wrap socket option variations. Modified files: trunk/ext/socket/option.c Index: ext/socket/option.c =================================================================== --- ext/socket/option.c (revision 44646) +++ ext/socket/option.c (revision 44647) @@ -2,6 +2,16 @@ https://github.com/ruby/ruby/blob/trunk/ext/socket/option.c#L2 VALUE rb_cSockOpt; +#if defined(__NetBSD__) || defined(__OpenBSD__) +typedef unsigned char rb_sockopt_t; +# define NUM2SOCKOPT(value) NUM2CHR(rb_to_int(value)) +# define sockopt_value(obj) sockopt_byte(obj) +# else +typedef int rb_sockopt_t; +# define NUM2SOCKOPT(value) NUM2INT(rb_to_int(value)) +# define sockopt_value(obj) sockopt_int(obj) +#endif + static VALUE constant_to_sym(int constant, ID (*intern_const)(int)) { @@ -353,11 +363,7 @@ static VALUE https://github.com/ruby/ruby/blob/trunk/ext/socket/option.c#L363 sockopt_s_ipv4_multicast_loop(VALUE klass, VALUE value) { #if defined(IPPROTO_IP) && defined(IP_MULTICAST_LOOP) -# if defined(__NetBSD__) || defined(__OpenBSD__) - unsigned char i = NUM2CHR(rb_to_int(value)); -# else - int i = NUM2INT(rb_to_int(value)); -# endif + rb_sockopt_t i = NUM2SOCKOPT(value); return rsock_sockopt_new(AF_INET, IPPROTO_IP, IP_MULTICAST_LOOP, rb_str_new((char*)&i, sizeof(i))); #else @@ -383,11 +389,7 @@ sockopt_ipv4_multicast_loop(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/socket/option.c#L389 #if defined(IPPROTO_IP) && defined(IP_MULTICAST_LOOP) if (family == AF_INET && level == IPPROTO_IP && optname == IP_MULTICAST_LOOP) { -# if defined(__NetBSD__) || defined(__OpenBSD__) - return sockopt_byte(self); -# else - return sockopt_int(self); -# endif + return sockopt_value(self); } #endif rb_raise(rb_eTypeError, "ipv4_multicast_loop socket option expected"); @@ -416,11 +418,7 @@ static VALUE https://github.com/ruby/ruby/blob/trunk/ext/socket/option.c#L418 sockopt_s_ipv4_multicast_ttl(VALUE klass, VALUE value) { #if defined(IPPROTO_IP) && defined(IP_MULTICAST_TTL) -# if defined(__NetBSD__) || defined(__OpenBSD__) - unsigned char i = NUM2CHR(rb_to_int(value)); -# else - int i = NUM2INT(rb_to_int(value)); -# endif + rb_sockopt_t i = NUM2SOCKOPT(value); return rsock_sockopt_new(AF_INET, IPPROTO_IP, IP_MULTICAST_TTL, rb_str_new((char*)&i, sizeof(i))); #else @@ -446,11 +444,7 @@ sockopt_ipv4_multicast_ttl(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/socket/option.c#L444 #if defined(IPPROTO_IP) && defined(IP_MULTICAST_TTL) if (family == AF_INET && level == IPPROTO_IP && optname == IP_MULTICAST_TTL) { -# if defined(__NetBSD__) || defined(__OpenBSD__) - return sockopt_byte(self); -# else - return sockopt_int(self); -# endif + return sockopt_value(self); } #endif rb_raise(rb_eTypeError, "ipv4_multicast_ttl socket option expected"); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/