[ruby-dev:39499] sockaddr_storageのメンバ

View: New views
4 Messages — Rating Filter:   Alert me  

[ruby-dev:39499] sockaddr_storageのメンバ

by Yutaka Kanemoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

金本と申します。

AIXでss_lenがないといわれてsocket.soがつくれないのですが、
メンバを調べてみると、ss_familyと__ss_lenという組み合わせでした。

現状ext/socket/extconf.rbでは、ss_familyとss_lenは 頭に __ が
両方ついているか両方ついていないかという状況しか対応できないようです。
AIX5.1では両方についていたのですが、AIX5.2以降でss_familyのほうだけ
__がなくなりました。

そこで、以下のように別々の判定にしてしのいでみました。
AIX以外のプラットフォームで影響がでかねない変更なので、
身の回りをしらべたところ、ほかにss_lenがあるのをみつけたのはFreeBSD 7.2ぐらいだったのですが、
影響はなさそうでした。

こんな内容でコミットさせていただいてもよろしいでしょうか?

Index: ext/socket/extconf.rb
===================================================================
--- ext/socket/extconf.rb       (revision 25376)
+++ ext/socket/extconf.rb       (working copy)
@@ -97,8 +97,10 @@
 #   doug's fix, NOW add -Dss_family... only if required!
 doug = proc {have_struct_member("struct sockaddr_storage",
"ss_family", headers)}
 if (doug[] or
-    with_cppflags($CPPFLAGS + " -Dss_family=__ss_family
-Dss_len=__ss_len", &doug))
+    with_cppflags($CPPFLAGS + " -Dss_family=__ss_family", &doug))
   $defs[-1] = "-DHAVE_SOCKADDR_STORAGE"
+  doug = proc {have_struct_member("struct sockaddr_storage",
"ss_len", headers)}
+  doug[] or with_cppflags($CPPFLAGS + " -Dss_len=__ss_len", &doug)
 end

 if have_struct_member("struct sockaddr", "sa_len", headers)


よろしくお願いいたします。
--
Yutaka KANEMOTO
http://d.hatena.ne.jp/kinpoco/


[ruby-dev:39526] Re: sockaddr_storageのメンバ

by NARUSE, Yui-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

うちの FreeBSD 8.0-RC1 amd64 でも大丈夫でした。

--
NARUSE, Yui  <naruse@...>


[ruby-dev:39530] Re: sockaddr_storageのメンバ

by Yukihiro Matsumoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

まつもと ゆきひろです

In message "Re: [ruby-dev:39499] sockaddr_storageのメンバ"
    on Sat, 17 Oct 2009 00:47:13 +0900, Yutaka Kanemoto <kinpoco@...> writes:

|AIXでss_lenがないといわれてsocket.soがつくれないのですが、
|メンバを調べてみると、ss_familyと__ss_lenという組み合わせでした。
|
|現状ext/socket/extconf.rbでは、ss_familyとss_lenは 頭に __ が
|両方ついているか両方ついていないかという状況しか対応できないようです。
|AIX5.1では両方についていたのですが、AIX5.2以降でss_familyのほうだけ
|__がなくなりました。
|
|そこで、以下のように別々の判定にしてしのいでみました。
|AIX以外のプラットフォームで影響がでかねない変更なので、
|身の回りをしらべたところ、ほかにss_lenがあるのをみつけたのはFreeBSD 7.2ぐらいだったのですが、
|影響はなさそうでした。
|
|こんな内容でコミットさせていただいてもよろしいでしょうか?

いいんじゃないでしょうか。


[ruby-dev:39577] Re: sockaddr_storageのメンバ

by Yutaka Kanemoto :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

成瀬さん、まつもとさん

対応遅くてどうもすみません。
調査ならびに許可ありがとうございます。
先ほどコミットさせていただきました。
ほかにassignされたものも順次対応します。

2009/10/22 Yukihiro Matsumoto <matz@...>:
> まつもと ゆきひろです
中略
> |こんな内容でコミットさせていただいてもよろしいでしょうか?
>
> いいんじゃないでしょうか。



--
Yutaka KANEMOTO
http://d.hatena.ne.jp/kinpoco/