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

[FDclone-users:00296] Re: FDclone 2.05f has been released



 しらいです。

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

 本当は先週中に release する予定だったのですが、諸々の理由
で今週までずれ込んでしまいました。お蔭で最初に報告した分以外
の修正がわらわらと...。


> 	「\」で終わるコマンド行を正しく処理出来ない点を修正。

 [FDclone-users:00287] にて報告させて頂いた分です。単純なミ
スだったんですが、チェックの甘さゆえ bug 混入のまま release
してしまいました。すみません。


> 	アーカイブブラウザでマークがある時のランチャ起動ミスを修正。

 archive browser で archive file の中を browse している時に
普通に file の上で Enter を押すと、launcher が発動して less
なり何なりが起動します。
 ところが、この際にこの対象 file 以外の file に mark がつい
ていた場合、一時的に unpack される対象が mark file の方にな
ってしまい、肝腎の対象 file が unpack されないという支障があ
りました。
 このため ENOENT で error 扱いになってしまっていました。


> 	USEGETCURSOR が機能していなかった点を修正。

 TIOCGWINSZ 等の ioctl() で画面サイズ取得に失敗した場合でも、
USEGETCURSOR を有効にしておけば ANSI 互換の cursor 位置取得
用 escape sequence を用いて画面サイズ取得をする筈でした。
 ところが、FD-2.05b で端末周りの調整を施した際に、この文字
列取得 routine の修正をミスりまして、文字列領域の先頭 1byte
だけを何度も書換えてしまっていました。
 その結果、端末が正しく cursor 位置を返していてもその文字列
を取得出来ておらず、その結果画面サイズ不明という結果になって
しまっていました。


> 	起動オプション -r が効いていなかった点を修正。

 仕様上は、以下の何れかの場合は一部制限 shell として起動さ
れたこととなり、directory 移動や PATH の変更など一部の機能が
制限される筈でした。
	・実行 file name が「r」で始まっていた場合
	・環境変数 SHELL の値が「r」で始まっていた場合
	・起動 option -r が与えられていた場合
 このうち -r に関しては FD-2.04b から機能しておらず、-r を
指定していたにも拘らず無制限 shell となっていました。


> 	vi モードの行編集を改善。

 EDITMODE=vi もしくは set -o vi しておくと、cursor 移動等の
key bind が vi ライクになります。
 これまでの仕様では、まずは vi の command mode から始まって、
「i」なり「a」なりを入力すると初めて inset mode になるという
ことにしてありました。
 このため、shell command line でも、一行入力する毎に command
mode になってしまい、cursor 移動以外の入力操作が煩わしくなっ
ていました。

 今回この仕様を改め、mode の初期値を文字列入力 interface で
のみ insert mode にしてみました。
 文字列入力では cursor 移動よりも文字入力の方に重点が置かれ
ていると判断したためこのような仕様にしてみましたが、これ以外
の interface、即ち [Y/N] や選択肢の選択等では依然旧来の仕様
を踏襲しています。
 cursor 移動に重点が置かれた interface では command mode で
始まった方が便利だと思ってのことなんですが、実際どうすれば使
い易くなるのか判断に苦しむところです。

 vi mode の interface 仕様に関しては、引続きみなさんの意見
を募りたいと思います。


> 	新端末ラインディシプリン非対応のエラーを無視するよう修正。

 termio 以前の端末 interface では、old tty mode と new tty
mode というものがあり、old tty mode では、例えば ^Z や ^V が
効かないとか job 制御が出来ないとか、そういう制限がありまし
た。
 これは、job 制御が現れる以前の端末との互換性を保つための措
置で、最近の端末 interface では大概これらの mode の切替え機
能を実装しています。
 ところが、一部の termio ベースの端末 interface では、この
mode 切替えに対応しておらず、new tty mode の挙動を示す端末で
も old tty mode であると答えるなど異常な環境が存在することが
判りました。

 既に termios では、old tty mode には対応しておらずこれらの
mode 切替え機能も持たない実装が多いのですが、termio は SYSV
由来の interface で、mode 切替え機能も仕様上は対応している筈
なのです。
 でも、termio の時代には既に new tty mode が主流であり、old
tty mode しか持たないという実装はあり得ないため、mode 切替え
に失敗した場合の処理を、termio/termios interface では「異常
終了」から「無視」に切替えました。

 実際、old tty mode から mode 切替え出来ないという環境は、
Tru64 UNIX (OSF/1) に存在するのですが、この変更により支障が
ないことが確認されています。

                                               しらい たかし