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

[FDclone-users:00260] Re: FDclone 2.05d has been released



 しらいです。

In Message-Id <20040512132927.64AE553C82@yuka.unixusers.net>
        Takashi SHIRAI <shirai@unixusers.net>writes:
>  しらいです。

 暫く間が空いてしまいましたが、結構大きな bug が幾つか見つ
かったので修正しました。決して犯罪を助長する目的での version
up ではありませんのでご了承下さい。
 では、各変更点の解説をしておきます。


> 	PS1 の \$ が機能していなかった点を修正。

 PS1 は command line の prompt を設定する変数ですが、この中
では幾つかの macro 表記を用いることが出来ます。「\$」は、本
来であれば「一般ユーザでは $、root では #」となる筈でした。
 これが、shell parser のミスで単なる「$」と解釈されてしまい、
root 時も「$」のままになってしまっていた訳です。多分 2.04 以
降ずっとそうなっていたと思います。


> 	PS1 の \~ が正しく展開されないことがあった点を修正。

 同様に PS1 の中では「$~」は current work directory の full
path を示す macro ですが、特に $HOME 以下にいた場合には $HOME
相当部分を「~」で表記してくれるという代物です。
 ところがこの機能が、directory 比較ではなく文字列比較により
実装されていたため、例えば HOME=/home/shirai の場合に /home/
shirai000 にいたとすると「~000」のように展開されてしまってい
ました。
 こっちは多分 1.03 でこの機能が実装されて以来ずっと存在して
いた bug だと思います。


> 	fdsh から fd 起動時にカレントディレクトリが戻らない点を修正。

 FDclone の shell 形態である fdsh の command line から「fd」
と入力すると、外部コマンドとして FDclone を呼び出す代わりに、
builtin として FDclone の browser 形態が起動します。
 外部コマンドとして起動された場合は、UNIX の常として終了時
に current work directory は元に戻ってしまう訳ですが、builtin
の場合は直前の current work directory を保持したまま終了して
しまいます。
 こういう仕様だということにしてしまっても構わないとは思いま
すが、非対称で気持ちが悪いだけでなく実用上も使い勝手が良くな
いので、builtin の際も current work directory を戻すようにし
ました。

 但し、終了時に current work directory を保存したいというニ
ーズはかねてより多かった訳で、この変更はそのニーズには反する
方向性になってしまいます。
 そこで、本家の『FD』に倣って終了時に「Q」を入力した場合
はこれまで通り current work directory を保存して終了すること
にしました。


> 	圧縮ファイル展開先に一時ディレクトリを選んだ時の警告を追加。

 archive browser を用いて archive file の中を覗く場合、その
archive の中に含まれる archive file を再帰的に展開することが
出来ます。
 この時、外側の archive file の中から内側の archive file を
一時的に展開し、その directory を current work directory と
することで、この機能は実現されています。
 その展開先の directory は $TMODIR 以下に作られ、browse し
て終ったら勿論削除される訳ですが、archive file の展開先とし
て「.」を入力してしまうと、これはこの削除される運命の一時デ
ィレクトリへの展開を意味します。
 FDclone の current work directory 表記を良く見ていれば、こ
のことはすぐ理解出来るとは思いますが、咄嗟にはそのことに気づ
かずに「展開した筈なのに消えた?」と不思議に思うこともあると
思います。
 そこで、このような場合には警告文を表示して、本当にその展開
先で構わないのか確認することにしました。

# て言うか、「消えた?」と思って大慌てしたのは私です :-)


P.S.
 [FDclone-users:00256] で要望のあった「test -L」ですが、-D
STRICTPOSIX 付で compile することで実装されるようにしておき
ました。
 config.h 辺りで #define しておくことで有効になりますが、他
にも非 POSIX な仕様が strict に POSIX 準拠になりますので、指
定する場合は慎重に対処して下さい。
 本来の Bourne shell 仕様は POSIX に反する箇所が多いんです
よね。

                                               しらい たかし