[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00449] Re: ファイル選択→ソート後 のディレクトリ書き込み



 しらいです。

In Message-Id <20051221074321001.BOVV.21537.t-webmail1.odn.ne.jp@webmail1.odn.ne.jp>
        <hma@syd.odn.ne.jp>さんwrites:
> 濱崎です。

> 表示されているファイルが、選択で限定されているときには
> ・ディレクトリ書き込みを行わない
> ・選択されたファイルはディレクトリの末尾(または先頭)に寄せて書き込む
> 
> などの対処が必要だと思います。

 勿論、仕様上はそういう配慮を考えていて、後者の実装になって
いる筈です。
 選択により一部のファイルしか表示されていないケース以外にも、
作業の最中に別のプロセスが新たにファイルが追加した場合など、
非表示ファイルは最後尾にまとめて配置します。
 2.02b までは確かにそういう期待通りの挙動を示していたのです
が、2.03 で em-bug してしまったようです。

 その「No such file or directory」という表示は、非表示ファ
イルを最後にまとめて再配置しようとして失敗していることを表し
ています。
 一時ディレクトリに置いたファイルを再配置する際に、そのパス
名を生成しようとして文字列の長さをカウントミスした結果、あり
得ないパス名を生成してしまっていました。
 そのエラーメッセージを良く読んで貰うと、妙なパス名になって
いることが確認出来ると思います。

# そのメッセージを丸ごと引用してくれてたらもっと簡単に原因
#を見つけられたのですが...。

-------- Cut Here --------
diff -u ../old/FD-2.07c/file.c ./file.c
--- ../old/FD-2.07c/file.c	Tue Dec 13 00:00:00 2005
+++ ./file.c	Wed Dec 21 20:41:25 2005
@@ -1615,7 +1615,8 @@
 		free(tmpdir);
 		tmpdir = cp;
 	}
-	fnamp = strcatdelim2(path, tmpdir, fnamelist[top]) - path;
+	fnamp = strcatdelim2(path, tmpdir, NULL) - path;
+	snprintf2(&(path[fnamp]), sizeof(path) - fnamp, fnamelist[top]);
 	if (saferename(path, fnamelist[top]) < 0) warning(-1, path);
 	restorefile(tmpdir, path, fnamp);
 
-------- Cut Here --------

                                               しらい たかし