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

[FDclone-users:00277] Re: error handling with chflags(2)



At Sun, 23 May 2004 04:53:39 +0900,
Takashi SHIRAI wrote:
> >  そのため、 chflags(2) がサポートされないファイルシステム上で
> > マークファイルに対して ATTR_FILE を実行すると、フラグ部分を全く
> > いじっていない場合でも、ファイル一つ一つについて「Operation not
> > supported」エラーが出てキー入力を促されます。これが鬱陶しい…。
> 
>  これって例えばどういう file system でしょう?真っ先に FAT
> を思いついたんで -t msdos で floppy を mount して試してみた
> のですが、特に支障なく operation が完了してしまいました。
>  kernel source 覗いたら msdosfs は archived flag に対応して
> いるみたいで。

 NFSです。

> >  マークファイルに対しての ATTR_FILE においても、各ファイルに
> > ついて変更が必要な場合だけ chflags(2) を呼ぶようにするとか、
> > あるいは EOPNOTSUPP は最後にまとめて報告するとか、うまく対処
> > してもらえないでしょうか。
> 
>  前者は変更が必要か否かで呼ぶ呼ばないを区別している訳ではな
> くて、入力として値が変更されたか否かで判断しています。

 はい、それはソースを読んで確認していました。

>  mark file の場合にこの判別をせずに呼んでいるのは、入力され
> た値が単一であるのに対し、元の file mode なり timestamp なり
> は単一ではないので、変更すべきものと不要なものとを区別するに
> は改めて stat() で元の値を調べないとならないためです。

 まあ、対話的なコマンドなのでコストという点では大した問題では
ないかもしれませんが、リムーバブルメディアなどではできるだけ
避けたいでしょうね。

>  後者に関しては、それぞれの mark file に関してどんな error
> が返るか予測不能なので、最後にまとめて表示した場合には、どの
> error がどの file に対するものなのか判別不能になってしまいま
> す。

 ファイル名と共にメッセージをバッファしておいて最後にずらずらと
出すイメージでした。こういう風に↓

	いくつかのファイルの属性を変更できませんでした。
	a.c: Operation not supported
	a.h: Operation not supported
	a.o: Operation not supported
	何かキーを押して下さい.

つまらないことの割に実装は(Cなので)面倒そうですが。(笑)

>  という訳で、「変更していない (出来ない) のに error を吐く」
> というのは理不尽なので改めますが、error の表示方法に関しては
> 従来どおりということにします。
>  ad hoc に直すとこんな感じでしょうか。

 ありがとうございます。問題は解消しました。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"It seems to me as we make our own few circles 'round the sun
          We get it backwards and our seven years go by like one"