こんにちは、なかむら(う)です。
すみません、反応するの忘れてました。

In message "[ruby-dev:22249] Re: errors in test/fileutils"
    on Dec.12,2003 20:48:23, <siena / faculty.chiba-u.jp> wrote:
| いえ。説明が悪くて問題としている事を誤解されてしまったようです。
| [ruby-dev:21945] で報告したように、(手元では) 
| カレントドライブ込みで chdir するように変更してあります。
| 
| 改めて説明をさせていただきます。
| 例えば、始めに次のようになっているとします。
| (A) カレントドライブ     C:
|     カレントディレクトリ C:/foo, D:/
| 
| あたしの理解では、DOSISH ではドライブ毎にカレントディレクトリが存在
| するため、cd D:/bar とすると C: のカレントディレクトリはそのままで、
| カレントドライブが D: になり、D: のカレントディレクトリが変更されます。
| (B) カレントドライブ     D:
|     カレントディレクトリ C:/foo, D:/bar
| 
| 最近の他の DOSISH では、このような場合には変更元ドライブ C: のカレント
| ディレクトリが強制的に / になるなど、従来の (古の?) 複数ドライブでの
| カレントディレクトリ管理とは異なる動作をするようになっているのでしょうか。
| (C) カレントドライブ     D:
|     カレントディレクトリ C:/, D:/bar
| 
| このように (A)->(C) となるならば、今回お尋ねした問題は起こりえません。
| この動作が期待されているなら、missing/os2.c を再変更したいと思います。
| もし (A)->(B) となるならば、[ruby-dev:22238] の問題が起きそうですが、
| いかがでしょうか。

[ruby-dev:22238]とこのメールから推測するに、OS/2では、現在の
カレントドライブ以外のカレントディレクトリも削除することがで
きない、という話なのだと思いますが、この理解であってますか?

以下、そういう前提で。

Windowsでは、ドライブごとのカレントディレクトリはWin32API的に
は存在しません。
command.exe/cmd.exe/MSVCRT.dllでは、隠し環境変数を利用してド
ライブごとのカレントディレクトリを記憶し、カレントドライブが
切り替わるたびに、この隠し環境変数を利用してカレントディレク
トリを変更します。
もしカレントドライブ変更時にそのディレクトリが存在しなくなっ
ていた場合は、ルートディレクトリをカレントディレクトリとする
ようです。
というわけで、Windowsではそもそも問題は起きていません。

DOSはどうなってましたっけ。あとHuman68kかな。
mswinceはドライブレターがないからそもそも大丈夫。


それでは。
-- 
U.Nakamura <usa / osb.att.ne.jp>