[不具合]代替ストリーム名を指定して開くNo.38925
fzok4234 さん 21/05/18 15:19
 
代替ストリーム名を「:」で繋いだファイル名の意味が曖昧になるとき、これを秀丸
エディタで
開こうとすると思わぬ動作をすることがあります。

例えば、カレントドライブが
C:\
で、そのカレントディレクトリが
C:\dir
であり、ここに2個のファイル
foo
C
があったとします。そして、ファイル
C
には代替ストリーム
foo
が存在したとします。この時、このカレントディレクトリ上において、ファイル名
C:foo
は2つの異なる意味を持ってしまいます。1つはカレントディレクトリ
C:\dir
内のファイル
C
の代替ストリーム
foo
、すなわち
C:\dir\C:foo
を指します。もう1つはドライブ
C:\
におけるカレントディレクトリ上のファイル
foo
、すなわち
C:\dir\foo
を指します。

この場合において、まずコマンドプロンプトでこのディレクトリを開きます。
cd /d "C:\dir"
次に、ファイル名"C:foo"を秀丸エディタで開きます。
hidemaru "C:foo"
すると、「C:\ドライブのカレントディレクトリ内のfooファイル」と解釈されて
"C:\dir\foo"の方が開かれます。これは正常な動作だと思われます。その次に、
「カレントディレクトリ内のCファイルのfoo代替ストリーム」を開くことを意図して
hidemaru ".\C:foo"
を実行します。すると、他のプロセスがファイルを開いているわけでもないのに
「このファイルは、他のアプリケーションによって書き換えられてしまいました。
読み直しますか。」
のダイアログが出てきてしまいます。また、エディタ上の内容は"C:\dir\foo"の方で
あるにも
かかわらず、タイトルバーには"C:\dir\C:foo"の方が表示されていて、ちぐはぐな状
態になって
しまいます。また、絶対パスを指定して
hidemaru "C:\dir\C:foo"
を実行しても同じ結果となります。

バージョンはv8.98β6 Float x64です。

[ ]
RE:38925 [不具合]代替ストリーム名を指定No.38929
fzok4234 さん 21/05/19 05:50
 
続きです。

"C:\dir\C:foo"を開こうとして
hidemaru ".\C:foo"
を実行し、「このファイルは、他のアプリケーションによって書き換えられてしまい
ました。」の
ダイアログをOKした後で、内容を書き換えて上書き保存しようとすると、またも「こ
のファイルは、
他のアプリケーションによって書き換えられてしまいました。」のダイアログが出て
きます。そこで
OKして保存を強行すると、"C:\dir\C:foo"の方は何も変化せず、"C:\dir\foo"の方が
書き換わって
しまいました。

ちなみに"C:\dir\C:foo"ファイルの作成方法は、まず
hidemaru "bar:foo"
を実行して"C:\dir\bar:foo"ファイルとして開き、適当に内容を入力後に上書き保存
してファイルを
閉じた後で、
ren "bar" "C"
を実行して名前を変更します。


[ ]
RE:38929 [不具合]代替ストリーム名を指定No.38933
秀丸担当 さん 21/05/19 08:54
 

>hidemaru ".\C:foo"
というようにした場合は、確かにおかしかったです。
ご指摘ありがとうございます。
こういう場合でもできるように修正させていただきます。

[ ]
RE:38933 [不具合]代替ストリーム名を指定No.38983
fzok4234 さん 21/05/26 03:07
 
修正ありがとうございます。v8.98β9 Float x64にて動作確認できました。


[ ]