From: nobu@... Date: 2005-04-15T09:04:15+09:00 Subject: [ruby-dev:26060] Re: bcc32、win32 での install-doc の動作 なかだです。 At Thu, 14 Apr 2005 19:44:59 +0900, H.Yamamoto wrote in [ruby-dev:26059]: > DESTDIR => e:/temp のとき > > File.join("e:/temp", "/lib") #=> "e:/temp//lib" > > となるために Dir[] が働いてませんでした。仕方ないので重複するスラッシュを > 削除するようにしました。 重複してるとダメなんでしたっけ。 それと、これも気づいてませんでしたが、[ruby-dev:26040]では DESTDIRが空のときに[ruby-dev:26035]と同じ問題がありました。とい うか、[ruby-dev:26035]ってUNCになっちゃうってことですよね? -e 'ARGV.reject!do|i|i.empty?end' を足しといてください。 > # でも、これって File.join の仕様としてはどうなんでしょう。 なんでこうなってるんでしたっけ。直すのは簡単ですが、なんか理由 があったようななかったような。 > また、DESTDIR=e: だと相対パスとして扱われてエラーになるので、デフォルトの > DESTDIR を e:/ のようにスラッシュ付きにしました。こうすると e://temp のように > スラッシュが重複してしまうのですが、動いているようなので良しとしました。 「相対パスとして扱われて」というのがいまいち分からないのですが。 _copy_entryの中のexpand_path? Index: file.c =================================================================== RCS file: /cvs/ruby/src/ruby/file.c,v retrieving revision 1.198 diff -U2 -p -r1.198 file.c --- file.c 11 Apr 2005 13:30:10 -0000 1.198 +++ file.c 14 Apr 2005 23:52:35 -0000 @@ -2871,6 +2871,8 @@ rb_file_join(ary, sep) } name = StringValueCStr(result); - if (i > 0 && !NIL_P(sep) && !*chompdirsep(name)) + if (i > 0 && !NIL_P(sep) && !*chompdirsep(name) && + !isdirsep(RSTRING(tmp)->ptr[0])) { rb_str_buf_append(result, sep); + } rb_str_buf_append(result, tmp); if (OBJ_TAINTED(tmp)) taint = 1; -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦