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

[FDclone-users:00122] FDclone 2.02b has been released



 しらいです。

 先ほど fj.sources に FDclone 2.02b の patch を投稿しました。
そのうち各種 ftp/http site にも置かれることになるでしょう。

 早速ですが HISTORY の変更項目の解説をしておきます。

> 	クロスコンパイル環境に対応。

 make 時に CC だけでなく HOSTCC を指定出来るようにしました。
具体的には「make CC=arm-linux-gcc HOSTCC=cc」のように指定し
ます。
 mkunitbl, mkmfsed といった、compile 時に使われる実行 file
は $(HOSTCC) で、最終的に生成される実行 file は $(CC) で、そ
れぞれ compile されます。
 上の例では、local には cc を使い、最終生成物には arm-linux
-gcc を使います。

# Linux Zaurus の cross compile 環境の例です。


> 	64bit OS 用の対応。

 sparc64 の話です。


> 	端末の必要最小カラム数を 34 に緩和。

 Linux Zaurus 用の対応です。動的に font size を変えていった
時に、画面が足りなくなって落ちるのも回避しています。kterm な
んかでも確認出来ると思いますよ。


> 	端末 erase 文字を BS キーとして使えるように改良。

 stty erase ^? してあったら、^? を BS として扱うようにしま
した。但し、termcap/terminfo の中で ^? が定義されていればそ
ちらを優先しますが。勿論、^? じゃない erase 文字でも BS 扱い
です。
 termcap/terminfo 情報と矛盾する Linux Zaurus 用の窮余の策
です。


> 	アーカイブファイル中のシンボリックリンクの処理ミスを修正。

 symbolic link を含む archive file の中を覗いた場合にも、そ
の archiver がちゃんと link 情報を返すならば、symbolic link
先の filename を表示出来るようにしました。
 例えば tar はちゃんと symbolic link を扱えるようです。


> 	疑似 RockRidge 拡張機能のシンボリックリンクの処理ミスを修正。

 TRANS.TBL の中には symbolic link 情報も書けるので、それが
書いてあれば実際に symbolic link でなくても symbolic link 扱
いにしました。
 と言っても、最近 TRANS.TBL なんて見かけませんねー :-)


> 	ディレクトリ移動失敗時に異常終了していた点を修正。

 read permission が落ちてるとか、物理的に directory が壊れ
ているとか、とにかく chdir() に失敗した場合に FDclone ごと落
ちてました。
 実は、warning message を出した後にその warning message の
後始末のため画面を書き直そうとして落ちてたんです。余計なこと
しようとするから。


> 	論理ディレクトリ移動が正しく機能していなかった点を修正。

 cd -L で symbolic link を辿らずに chdir() する仕様になって
いたのですが、常に辿ってしまっていました。その他にも fullpath
表記がこの仕様に合わない局面が多々ありました。


> 	シェルのサスペンド時の端末制御をより丁寧に改良。

 これは二つのことを指しています。一つには自分が suspend か
ら復帰した際に suspend 前の端末状態に戻すこと。もう一つには、
子 process が suspend した際にその端末状態を憶えておいて、fg
で復帰する時に元の状態に戻してやること。
 後者は bash や tcsh でも実現出来ていないみたいですね。確か
にいちいち憶えておくのは面倒なんですけど。


> 	wild card のメタ文字を「\」で無効化できなかったバグを修正。

 knu さんに指摘されたとおりの凡ミスです。


> 	&& と || の評価ミスを修正。

 これは実は色々な例があります。C と違って sh では && と ||
に優先順位が無いので、「a || b && c」は「(a || b) && c」の意
味になります。常に左から () で括られる感じですね。この処理が
まず出来ていませんでした。常に右から () で括られてしまってい
たことになるのかな?
 あと、-o errexit 状態で「a && b」の a で失敗した場合、b の
実行を cancel するのは良いのですが errexit に従って shell ま
で終了させてしまっていました。
 その他、実行 command 列を表示させる時の演算子表示の問題だ
とか、あと何だっけ、とにかく色々ありました。


> 	変数名に数字を使えなかった点を修正。

 ${X1} は正しく評価出来るのに $X1 は「$X」+「1」になってし
まってました。


> 	${##} が正しく機能していなかったバグを修正。

 前方一致と後方一致が逆でした。単純な coding ミスです。英語
なので POSIX の規格書は解釈し辛くて... ってのは単なる言い訳
ですね。


> 	$(()) の演算子 | が ^ として扱われていたバグを修正。

 何か同じような記述が並ぶので copy & paste したところ、直前
の「|」用の処理をそのまま「^」用の処理に使ってしまったという
凡ミスです。


> 	$(()) が負数を扱えなかったバグを修正。

 $(()) の中の演算結果が負数になった場合に「?」と表示されて
しまっていました。しかもこの「?」が wildcard 文字なもので、
妙なものに match したりして。


> 	$(()) で 8 進数及び 16 進数を使えなかったバグを修正。

 POSIX によると $(()) の中の演算は ISO C のルールに準拠だそ
うで、となると 0xff とか 022 とかいう数値表現を扱えないとい
けないみたいです。


 他にもこまごまと直している箇所があるかも知れません。shell
の機能を見直しているうちに関係ない場所で幾つも bug が見つか
ったもので。
 多分、bash 同梱の tests を実行するともっと色々 bug が見つ
かるような気もしますが、試しに使ってみたらそもそもの仕様が全
然違うので test にも何にもなりませんでした。
 一応 fdsh 用の問題集は作ってあるんですけど、自分で思いつい
た問題しか網羅されてませんから。

                                               しらい たかし