[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]