[#27711] Re: [ruby-list:41557] Re: Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

16 messages 2005/11/15
[#27717] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27718] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

こんにちは、なかむら(う)です。

[#27719] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27720] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

こんにちは、なかむら(う)です。

[#27721] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/16

山本です。

[#27722] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — "U.Nakamura" <usa@...> 2005/11/16

こんにちは、なかむら(う)です。

[#27723] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない? — 小西 弘将 <konishih@...6.so-net.ne.jp> 2005/11/16

 小西 弘将です。

[#27735] FNM_CASEFOLD on case-sensitive system — nobuyoshi nakada <nobuyoshi.nakada@...>

なかだです。

15 messages 2005/11/18
[#27737] Re: FNM_CASEFOLD on case-sensitive system — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/18

山本です。

[#27758] File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org>

次に cygwin における

26 messages 2005/11/19
[#27768] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27769] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <20051121093604.3A67.USA@garbagecollect.jp>,

[#27770] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27771] Re: File.dirname("///foo/bar/baz/qux") on cygwin — WATANABE Hirofumi <eban@...> 2005/11/21

わたなべです。

[#27772] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <1191-Mon21Nov2005112905+0900-eban@os.rim.or.jp>,

[#27773] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27774] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <20051121120453.3A70.USA@garbagecollect.jp>,

[#27776] Re: File.dirname("///foo/bar/baz/qux") on cygwin — Tanaka Akira <akr@...17n.org> 2005/11/21

In article <87ek5a665s.fsf@m17n.org>,

[#27777] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27778] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27779] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27781] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27782] Re: File.dirname("///foo/bar/baz/qux") on cygwin — "U.Nakamura" <usa@...> 2005/11/21

こんにちは、なかむら(う)です。

[#27783] Re: File.dirname("///foo/bar/baz/qux") on cygwin — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/11/21

なかだです。

[#27766] 1.8.4 preview2? — "URABE Shyouhei aka.mput" <root@...>

卜部です。間が空きましたが

17 messages 2005/11/20
[#27798] Re: 1.8.4 preview2? — Yukihiro Matsumoto <matz@...> 2005/11/21

まつもと ゆきひろです

[#27818] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

15 messages 2005/11/25
[#27819] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — Yukihiro Matsumoto <matz@...> 2005/11/25

まつもと ゆきひろです

[#27821] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "U.Nakamura" <usa@...> 2005/11/25

こんにちは、なかむら(う)です。

[#27823] Re: [ ruby-Bugs-2872 ] TCPServer should not use SO_REUSEADDR in Cygwin port — "U.Nakamura" <usa@...> 2005/11/25

こんにちは、なかむら(う)です。

[#27839] ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org>

最近、boron でやっている chkbuild で ruby-1.8 が test-all 中

32 messages 2005/11/28
[#27862] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/11/28

山本です。

[#27911] Re: ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org> 2005/12/01

In article <20051130210645.7228E2B0.ocean@m2.ccsnet.ne.jp>,

[#28046] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#28048] Re: ruby 1.8 dumps core — Tanaka Akira <akr@...17n.org> 2005/12/19

In article <20051219120911.F876DDD0.ocean@m2.ccsnet.ne.jp>,

[#28050] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#28057] Re: ruby 1.8 dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/19

山本です。

[#27871] Numeric と Complex — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

37 messages 2005/11/29
[#27872] Re: Numeric と Complex — keiju@... (石塚圭樹) 2005/11/29

けいじゅ@いしつかです.

[#27873] Re: Numeric と Complex — Yukihiro Matsumoto <matz@...> 2005/11/29

まつもと ゆきひろです

[#27875] Re: Numeric と Complex — keiju@... (石塚圭樹) 2005/11/29

けいじゅ@いしつかです.

[ruby-dev:27717] Re: [ruby-list:41557] Re:Windowsにおける共有フォルダーでのDir.globは一覧を返さない?

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-11-16 03:11:28 UTC
List: ruby-dev #27717
山本です。

>rb_w32_stat() で常に成功するようにさせるのは多少の不安がある
>ので、rb_w32_opendir() 側で対処したパッチです。
>
>悪い副作用はないと思うので、1.8、1.9の両方に入れようかと思う
>のですが、どうでしょう。

試してみましたが、うまく動きませんでした。

$ e:\hoge というディレクトリを作り、共有名 hoge で共有、その下に
# a.txt というファイルと b というディレクトリを作成

irb(main):001:0> Dir.glob("//server/hoge/*")
=> []
irb(main):002:0> Dir.glob("//server/hoge/")
=> []
irb(main):004:0> Dir.glob("//server/hoge/b")
=> ["//whiterab-c2znlh/hoge/b"]
irb(main):005:0> Dir.glob("//server/hoge/a.txt")
=> ["//whiterab-c2znlh/hoge/a.txt"]
irb(main):006:0> Dir.glob("//server/hoge/a.*")
=> []

この問題は多分、stat 内部で使われている FindFirstFile が、ルートディレクトリと
UNC 共有名に対して呼び出せないことが原因だと思います。

http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findfirstfile.htm

本来ルートディレクトリに対しても使えないのですが、stat はその場合は care していて、
UNC の場合は care してないため、UNC だけが問題になっているようです。

なので、ライブラリの stat がルートディレクトリを care している以上、
UNC の共有名も同様に care するのが綺麗な解決方法ではないかと思います。
(たぶん、"." だけ特別扱いしても、".." とかを混ぜて "." を使わずに
UNC 共有名にアクセスすれば動かないはずです)

個人的には、stat を WIN32API を使って自前で実装して、ついでに stat
がらみのほかの問題も同時に解決できると素敵なんじゃないかと思います。

  1. 64bit ファイルサイズサポート(struct stat を置き換える・・・バイナリ互換が問題?)

  2. ハードリンクの個数が常に1 [ruby-dev:21949]

/////////////////////////////////////////////////////////////////

#include <iostream>
#include <windows.h>
#include <sys/stat.h>

void test1(const char *path)
{
    DWORD dw = GetFileAttributes(path);

    if (dw != 0xFFFFFFFF)
    {
        std::cout << static_cast<bool>(dw & FILE_ATTRIBUTE_DIRECTORY) << std::endl;
    }
    else
    {
        std::cout << "error!!" << std::endl;
    }
}

void test2(const char *path)
{
    WIN32_FIND_DATA wfd;

    HANDLE h = FindFirstFile(path, &wfd);

    if (h != INVALID_HANDLE_VALUE)
    {
        std::cout << static_cast<bool>(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) << std::endl;

        FindClose(h);
    }
    else
    {
        std::cout << "error!!" << std::endl;
    }
}

void test3(const char *path)
{
    struct stat st;

    if (stat(path, &st) == 0)
    {
        std::cout << static_cast<bool>(st.st_mode & S_IFDIR) << std::endl;
    }
    else
    {
        std::cout << "error!!" << std::endl;
    }
}

int main(int argc, char *argv[])
{
    if (argc > 1)
    {
        test1(argv[1]);
        test2(argv[1]);
        test3(argv[1]);
    }
}


R:\>z \server\hoge
1
error!!
error!!

R:\>z \\server\hoge\b\..
1
error!!
error!!

R:\>z \\server\hoge\.
1
error!!
error!!

R:\>z \\server\hoge\b
1
1
1

R:\>z \\server\hoge\a.txt
0
0
0


In This Thread