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

mv(1) and file flag.



こんばんは。

k*bugのメーリングリストで話題に上がったのですが、「『mv(1)でファイルを移動
したときにファイル・フラグが保存されない』という4.4BSD由来のバグを
send-prした(正確には依頼した)けど反映されてない。」という話が出ました。

確かにmv(1)のソースを見ると、chflag(1)で設定できるファイル・フラグに一切
関知していません。

1. 移動するファイルがファイルシステムをまたがる場合に、ファイルの
   コピーを行ってから所有者やアクセス権を合わせます。

修正するのはたいして難しいことではないのですが、ふつと疑問が湧き上がりま
した。

2. ファイルの所有者やアクセス権を合わせることができなかった場合は、ウォー
   ニングを表示しますが、移動自体は正常に行えたと判断します。

失敗する事情としてはいろいろあります。例えば、移す先のファイルシステムが
ファイル・フラグをサポートしていないEOPNOTSUPPのケース(msdosfsとかNFS)が
あります。

修正する場合にfchflags(2)でファイル・フラグを設定することになりますが、
これに失敗した場合はどう扱うべきかです。エラーかウォーニングのメッセージ
を表示するのは当然で、EOPNOTSUPP以外のエラーはエラーとすべきのは順当と
思います。

しかし、問題はEOPNOTSUPPの場合で、果してファイルの移動はエラーとすべきか
正常に完了したと判断すべきか、ファイル・フラグの意味的にどうなんだろうと
疑問を持ったのです。

--
神戸 隆博(かんべ たかひろ) at home