[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00447] Re: FDclone 2.07c has been released
- Subject: [FDclone-users:00447] Re: FDclone 2.07c has been released
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Tue, 13 Dec 2005 21:24:58 +0900
しらいです。
今回の release は FDclone 2.08 への布石です。機能追加分と
bug fix 分とを分けて後者のみまとめたのが 2.07c です。em-bug
してるようなら早い目に洗い出したいのでみなさん宜しく。
In Message-Id <20051213113612.9786440C44F@yuka.unixusers.net>
Takashi SHIRAI <shirai@unixusers.net>writes:
> しらいです。
> 以下は HISTORY より今回の変更点の抜粋です。
恒例の解説です。
> 重複するパス名デリミタで終わるアーカイバ出力に対応。
たまに「foo/bar//」みたいな表記で directory が格納されてる
tar ball が作成されるようで、どうやって作成するのかは知らな
いんですが、アーカイブブラウザをそういう表記に対応しました。
> fdsh から fd を起動する際の引数が重複評価されていた点を修正。
発端は [FDclone-users:00444] の件です。この件そのものに関
しては仕様という回答をしましたが、同じことが fdsh から起動し
た fd に関しても生じていました。
fdsh は、明らかに引数の評価を行なってから組込みコマンド fd
に渡している訳で、この時は必ず重複評価になってしまう訳です。
なのでこっちは fd 側で評価しないように修正しました。
因みに、FDclone 2.08 では起動オプションでこの引数評価を抑
制出来るように実装するつもりです。
> カスタマイザで FNAMEKCODE に HEX/CAP を定義出来ない点を修正。
HEX/CAP は FNAMEKCODE 及び DEFKCODE で選択可能な漢字コード
ですが、カスタマイザでは何故か選択肢に含まれていませんでした。
すっかり忘れてたんでしょうね。
> 選択メニューで画面が崩れることがある点を修正。
まとめてありますが具体的な症状は二種類あります。一つは上の
HEX/CAP のように選択肢に存在しない値が選択メニューの初期値に
指定されていた場合です。
この場合は初期画面でどの選択肢も選択されていない状態から始
まるので、操作に一瞬戸惑うといった程度の崩れになります。
もう一つの症状は特殊なケースでしか顕現しません。具体的には
属性 0444 等のアクセス権制限のある file を一度に複数削除しよ
うとした場合です。
この場合には「アクセス権制限があるが削除するか?」という選
択メニューが出て来ますが、一回目に「いいえ」を選択すると二回
目以降の同じ選択肢に「*」がついてしまい、正しく選択出来ませ
ん。
こっちは操作結果に影響が及ぶ程の大きな崩れになります。
> PTYMODE=1 時の LANGUAGE 値の動的変更対応ミスを修正。
疑似端末使用時には FDclone は fork() で三分裂します。一個
が端末エミュレーションを行ない、もう一個が疑似端末を使う側の
プロセスになります。最後の一個がメインプロセスで、二個目のプ
ロセスにキー入力情報を送ります。
LANGUAGE のような環境変数を変更した場合、shell は二個目の
プロセスで動いていますので残りの二つにはすぐには伝わりません。
ところがバックエンドの端末エミュレータはこの変更を即座に知る
必要があります。
実際問題としては余り表面化されないのですが、表示文字が EUC
なのか ShiftJIS なのかによってカーソル移動の挙動が異なるので、
LANGUAGE の変更には迅速に反応しないといけないんですね。
この変数変更はプロセス間通信により各プロセス間を伝達される
のですが、この通信が全部のプロセスに伝わりきる前に二個目のプ
ロセスが画面表示を始めてしまう可能性がありました。
そこで、二個目のプロセスは端末エミュレータに通知が完了する
まで待つようにしています。これで各プロセス間で同期が取れるよ
うになっている筈です。
> fdsh を -N オプション付きで起動すると異常終了する点を修正。
fd として起動した時は大丈夫なのですが、fdsh として起動した
時のテストをサボっていました。
-N を指定した時だけでなく、~/.fd2rc 等の初期設定ファイルが
一個も存在しなかった時もこの症状になります。変数の初期化を初
期設定ファイルを読んだ最後に行なっていたため、ファイルを読ま
ないと初期化されていませんでした。
初期化されない変数は大概 0 なのですがポインタだと NULL に
なってしまって、その先を参照しようとして異常終了していました。
> コマンド履歴セーブファイルをロックで保護するように修正。
最近の file system では同時に複数のプロセスが同じファイル
に書込んでも大丈夫なんですが、本来はちゃんとプログラムの側で
同時アクセスを回避する必要があります。
コマンド履歴の保存は複数のプロセスで同時に行なわれる可能性
があるので flock(2) や fcntl(2) でロックをかけることにしまし
た。
> fdsh で ADJTTY が効いていなかった点を修正
元々 ADJTTY は fd 用なので fdsh として起動された時は不要か
と思っていたんですけど、マニュアルに明示的にそう書いてある訳
でもないし、ニーズとしては fdsh でも効いてくれた方が嬉しいと
いう声もあったので、fdsh でも有効にしました。
但し、non-interactive shell の場合は、却って迷惑な話になる
ので ADJTTY は無効です。具体的には、-c option で実行コマンド
が指定してある場合や shell script を起動する場合などです。
しらい たかし