[#23168] File.fnmatch のリファクタリング — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

13 messages 2004/03/08

[#23192] File.fnmatch と Dir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

19 messages 2004/03/13
[#23194] Re: File.fnmatch と Dir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/13

まつもと ゆきひろです

[#23195] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23196] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23260] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23261] Re: File.fnmatch とDir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/30

まつもと ゆきひろです

[#23265] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23238] Re: [ruby-cvs] ruby, ruby/lib, ruby/lib/rss, ruby/sample/openssl: * lib/logger.rb: trim tail space of each line. no user visible change. — Kouhei Sutou <kou@...>

須藤です.

10 messages 2004/03/27

[ruby-dev:23164] ext/socket/socket.c (Re: Re: test/drb/)

From: Masatoshi SEKI <m_seki@...>
Date: 2004-03-07 13:54:01 UTC
List: ruby-dev #23164
咳といいます。

>> drbのテストですが、クライアント側も
>> DRb.start_service("druby://localhost:0")
>> のようにlocalhostをつかうようにするのはどうでしょうか?
>>
>> こうすればSocket.gethostnameの逆引き結果によって
>> テストがうまくいかないという現象が解決すると思います。
>> (localhostとSocket.gethostnameの逆引き結果がIPv4とIPv6の
>> ように違っている場合など)
>
> なるほど。いいかも。
> でもそうするとパッチなしRubyではOSXで試験できないかもー。
>
> [ruby-dev:22356]

1.8ブランチの方で'druby://localhost:0'を使用するにしてcommitしました。
# 1.9はdrbのテストが通らなかったのでとりあえず見送りました。

この変更でOSXでは素のext/socket/socket.cではエラーとなります。
OSXのgetaddrinfo()がおかしいせいです。

次のパッチをext/socket/socket.cにあてるとOSXのバグを回避できるようです。
取り込んでもらえるととってもうれしいです。

Index: socket.c
===================================================================
RCS file: /src/ruby/ext/socket/socket.c,v
retrieving revision 1.108.2.1
diff -u -r1.108.2.1 socket.c
--- socket.c    27 Jan 2004 02:09:34 -0000      1.108.2.1
+++ socket.c    7 Mar 2004 13:49:27 -0000
@@ -651,6 +651,23 @@
         rb_raise(rb_eSocket, "getaddrinfo: %s", gai_strerror(error));
      }

+#if defined(__APPLE__) && defined(__MACH__)
+    {
+        struct addrinfo *r;
+       r = res;
+       while (r) {
+            if (! r->ai_socktype) r->ai_socktype = hints.ai_socktype;
+            if (! r->ai_protocol) {
+                if (r->ai_socktype == SOCK_DGRAM) {
+                    r->ai_protocol = IPPROTO_UDP;
+                } else if (r->ai_socktype == SOCK_STREAM) {
+                    r->ai_protocol = IPPROTO_TCP;
+                }
+            }
+            r = r->ai_next;
+        }
+    }
+#endif
      return res;
  }


In This Thread

Prev Next