ruby-changes:17206
From: akr <ko1@a...>
Date: Fri, 10 Sep 2010 02:20:00 +0900 (JST)
Subject: [ruby-changes:17206] Ruby:r29206 (trunk): * ext/socket/option.c (inspect_peercred): support OpenBSD-current.
akr 2010-09-10 02:19:52 +0900 (Fri, 10 Sep 2010) New Revision: 29206 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29206 Log: * ext/socket/option.c (inspect_peercred): support OpenBSD-current. patch by Jeremy Evans. [ruby-core:32240] Modified files: trunk/ChangeLog trunk/ext/socket/option.c Index: ChangeLog =================================================================== --- ChangeLog (revision 29205) +++ ChangeLog (revision 29206) @@ -1,3 +1,8 @@ +Fri Sep 10 02:15:29 2010 Tanaka Akira <akr@f...> + + * ext/socket/option.c (inspect_peercred): support OpenBSD-current. + patch by Jeremy Evans. [ruby-core:32240] + Thu Sep 9 23:25:53 2010 Nobuyoshi Nakada <nobu@r...> * vm.c (vm_backtrace_each): skip allocator frames which have no Index: ext/socket/option.c =================================================================== --- ext/socket/option.c (revision 29205) +++ ext/socket/option.c (revision 29206) @@ -396,13 +396,18 @@ } } -#if defined(SOL_SOCKET) && defined(SO_PEERCRED) /* GNU/Linux */ +#if defined(SOL_SOCKET) && defined(SO_PEERCRED) /* GNU/Linux, OpenBSD */ +#if defined(__OpenBSD__) +#define RUBY_SOCK_PEERCRED struct sockpeercred +#else +#define RUBY_SOCK_PEERCRED struct ucred +#endif static int inspect_peercred(int level, int optname, VALUE data, VALUE ret) { - if (RSTRING_LEN(data) == sizeof(struct ucred)) { - struct ucred cred; - memcpy(&cred, RSTRING_PTR(data), sizeof(struct ucred)); + if (RSTRING_LEN(data) == sizeof(RUBY_SOCK_PEERCRED)) { + RUBY_SOCK_PEERCRED cred; + memcpy(&cred, RSTRING_PTR(data), sizeof(RUBY_SOCK_PEERCRED)); rb_str_catf(ret, " pid=%u euid=%u egid=%u", (unsigned)cred.pid, (unsigned)cred.uid, (unsigned)cred.gid); rb_str_cat2(ret, " (ucred)"); @@ -569,7 +574,7 @@ # if defined(SO_SNDTIMEO) /* POSIX */ case SO_SNDTIMEO: inspected = inspect_timeval_as_interval(level, optname, data, ret); break; # endif -# if defined(SO_PEERCRED) /* GNU/Linux */ +# if defined(SO_PEERCRED) /* GNU/Linux, OpenBSD */ case SO_PEERCRED: inspected = inspect_peercred(level, optname, data, ret); break; # endif } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/