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

[FDclone-users:00147] Re: %M expansion



 しらいです。

In Message-Id <86vfx22904.wl%knu@iDaemons.org>
        "Akinori MUSHA" <knu@iDaemons.org>さんwrites:
> >  因みに redirect に用いた場合、
> > 	%T -> 空文字列に
> > 	%M -> マークファイルの回数分だけループ
> > という仕様にしてあります。利用者の意図するところと一致するか
> > 否かは疑問ですが、全く不自然な仕様でもないと思います。
> 
>  「> %T」の意図はわからないので、記述ミスと見て(構文)エラーに
> するのもありだと思います。

 %T を空文字列に変換するのは元々 argv[0] に %T を使われた場
合の仕様でして、> %T についても同じルールを適用しただけです。
余り深く考えた訳ではありませんが、意図が判らないのでどういう
処理が適切なのか判断し兼ねます。
 %T の前後になにがしかの文字列を含んでいた場合には、単に %T
部分を除いた文字列を redirect filename としますが、%T のみの
場合は空文字列の filename は open() 出来ませんので error 扱
いになっている筈です。

 あの patch だけでは、その error message 中に含まれる「%T」
だった箇所の文字列が壊れてて読めないと思いますが、表示に関し
ては全て「%T」「%M」に戻して扱うことにします。
 結局、%T, %M の扱いに関しては以下の 3 種類に分類されること
になります。
	1. 選択 filename に展開。
	   (コマンド引数, for 引数, %M in redirect)
	2. 空文字列に変換。
	   (コマンド名, %T in redirect, here document)
	3. 「%T」「%M」に戻す。
	   (各種表示, case 引数, 変数代入, 変数の {} 後半部)
 変数への代入時は 3. でなく 1. にすべきなのかも知れませんが、
ちょっと実装が面倒だったので 3. で逃げています。「X=%M foo」
のような loop を組みたいというニーズは考えられなくもないので
すけど。


>  今のところ使っている範囲では大丈夫です。FreeBSD port にも
> これらのパッチを追加しました。ありがとうございます。

 2.03b は GW 明けくらいに出す予定です。

                                               しらい たかし