mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/socket/option.c: Use preprocessor macros to avoid repeated
conditionals. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d36d3ec73b
commit
3b8bcf42a7
2 changed files with 29 additions and 35 deletions
|
@ -1,3 +1,8 @@
|
|||
Mon Jan 20 20:20:27 2014 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* ext/socket/option.c: Use preprocessor macros to avoid repeated
|
||||
conditionals.
|
||||
|
||||
Mon Jan 20 13:55:03 2014 Zachary Scott <e@zzak.io>
|
||||
|
||||
* lib/rubygems/version.rb: [DOC] Use gender-neutral pronouns [ci skip]
|
||||
|
|
|
@ -4,6 +4,18 @@ VALUE rb_cSockOpt;
|
|||
|
||||
#define pack_var(v) rb_str_new((const char *)&(v), sizeof(v))
|
||||
|
||||
#define CAT(x,y) x##y
|
||||
#define XCAT(x,y) CAT(x,y)
|
||||
|
||||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
# define TYPE_IP_MULTICAST_LOOP byte
|
||||
# define TYPE_IP_MULTICAST_TTL byte
|
||||
# define USE_INSPECT_BYTE 1
|
||||
#else
|
||||
# define TYPE_IP_MULTICAST_LOOP int
|
||||
# define TYPE_IP_MULTICAST_TTL int
|
||||
#endif
|
||||
|
||||
static VALUE
|
||||
sockopt_pack_byte(VALUE value)
|
||||
{
|
||||
|
@ -366,14 +378,10 @@ sockopt_linger(VALUE self)
|
|||
static VALUE
|
||||
sockopt_s_ipv4_multicast_loop(VALUE klass, VALUE value)
|
||||
{
|
||||
|
||||
#if defined(IPPROTO_IP) && defined(IP_MULTICAST_LOOP)
|
||||
# if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
VALUE o = sockopt_pack_byte(value);
|
||||
# else
|
||||
VALUE o = sockopt_pack_int(value);
|
||||
# endif
|
||||
return rsock_sockopt_new(AF_INET, IPPROTO_IP, IP_MULTICAST_LOOP,
|
||||
o);
|
||||
VALUE o = XCAT(sockopt_pack_,TYPE_IP_MULTICAST_LOOP)(value);
|
||||
return rsock_sockopt_new(AF_INET, IPPROTO_IP, IP_MULTICAST_LOOP, o);
|
||||
#else
|
||||
# error IPPROTO_IP or IP_MULTICAST_LOOP is not implemented
|
||||
#endif
|
||||
|
@ -397,22 +405,15 @@ sockopt_ipv4_multicast_loop(VALUE self)
|
|||
|
||||
#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 XCAT(sockopt_,TYPE_IP_MULTICAST_LOOP)(self);
|
||||
}
|
||||
#endif
|
||||
rb_raise(rb_eTypeError, "ipv4_multicast_loop socket option expected");
|
||||
UNREACHABLE;
|
||||
}
|
||||
|
||||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
# define inspect_ipv4_multicast_loop(a,b,c,d) inspect_byte(a,b,c,d)
|
||||
#else
|
||||
# define inspect_ipv4_multicast_loop(a,b,c,d) inspect_int(a,b,c,d)
|
||||
#endif
|
||||
#define inspect_ipv4_multicast_loop(a,b,c,d) \
|
||||
XCAT(inspect_,TYPE_IP_MULTICAST_LOOP)(a,b,c,d)
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
|
@ -430,13 +431,8 @@ static VALUE
|
|||
sockopt_s_ipv4_multicast_ttl(VALUE klass, VALUE value)
|
||||
{
|
||||
#if defined(IPPROTO_IP) && defined(IP_MULTICAST_TTL)
|
||||
# if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
VALUE o = sockopt_pack_byte(value);
|
||||
# else
|
||||
VALUE o = sockopt_pack_int(value);
|
||||
# endif
|
||||
return rsock_sockopt_new(AF_INET, IPPROTO_IP, IP_MULTICAST_TTL,
|
||||
o);
|
||||
VALUE o = XCAT(sockopt_pack_,TYPE_IP_MULTICAST_TTL)(value);
|
||||
return rsock_sockopt_new(AF_INET, IPPROTO_IP, IP_MULTICAST_TTL, o);
|
||||
#else
|
||||
# error IPPROTO_IP or IP_MULTICAST_TTL is not implemented
|
||||
#endif
|
||||
|
@ -460,22 +456,15 @@ sockopt_ipv4_multicast_ttl(VALUE self)
|
|||
|
||||
#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 XCAT(sockopt_,TYPE_IP_MULTICAST_TTL)(self);
|
||||
}
|
||||
#endif
|
||||
rb_raise(rb_eTypeError, "ipv4_multicast_ttl socket option expected");
|
||||
UNREACHABLE;
|
||||
}
|
||||
|
||||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
# define inspect_ipv4_multicast_ttl(a,b,c,d) inspect_byte(a,b,c,d)
|
||||
#else
|
||||
# define inspect_ipv4_multicast_ttl(a,b,c,d) inspect_int(a,b,c,d)
|
||||
#endif
|
||||
#define inspect_ipv4_multicast_ttl(a,b,c,d) \
|
||||
XCAT(inspect_,TYPE_IP_MULTICAST_TTL)(a,b,c,d)
|
||||
|
||||
static int
|
||||
inspect_int(int level, int optname, VALUE data, VALUE ret)
|
||||
|
@ -491,7 +480,7 @@ inspect_int(int level, int optname, VALUE data, VALUE ret)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(__NetBSD__) || defined(__OpenBSD__)
|
||||
#ifdef USE_INSPECT_BYTE
|
||||
static int
|
||||
inspect_byte(int level, int optname, VALUE data, VALUE ret)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue