[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00247] Re: FDclone 2.05 has been released
- Subject: [FDclone-users:00247] Re: FDclone 2.05 has been released
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Wed, 03 Dec 2003 22:23:33 +0900
しらいです。
In Message-Id <20031203124112.BB3B353DCB@yuka.unixusers.net>
Takashi SHIRAI <shirai@unixusers.net>writes:
> しらいです。
恒例の変更点解説です。
> 対応漢字コードに utf8-mac を追加。
Samba-ja に実装した Mac OS X 版の UTF8 に対応してみました。
Mac OS X では Unicode 3 の Normalization Form という一種の合
字規則を採用しているのですが、今までは素の Unicode にのみ対
応していました。
Normalization Form の詳細については下記 URL を参照して頂く
として、Mac OS X で採用しているルールは、Unicode Consortiun
の定める NFC/NFD/NFKC/NFKD のどれとも異なるので、Mac OS X 独
自の table を用意する必要があります。
http://www.unicode.org/reports/tr15/
かねてから FDclone にも実装する必要があるかなぁとは思って
いたのですが、table が鬱陶しいので見て見ぬふりをしていました。
でも Mac OS X って標準で「ユーザ登録」なんて名前の file を
作成してくれるんですね。この「ザ」が正に Normalization Form
の対象となって、これまでの FDclone では access 不能でした。
# Mac OS X 的には、この手の convert は Cocoa API を使えば
#不要なので、Darwin の layer で system call を使うという実
#装をやめればいいんですけど、FDclone は別に Mac OS X 専用に
#書いている訳ではないので、非 UNIX 部分に余り関わりたくはあ
#りません。
# 因みに Samba の方は Cocoa API で実装しようとしてるけどね。
#Apple 製の Samba は勿論 Cocoa API ですが、GPL にも拘らずそ
#の技術は本家 Samba に feedback されて来ないので、Samba team
#側で頑張って Cocoa 対応させるみたい。
# おっと、知らない人のために一応言っておくと、Samba 日本語
#版の実装は私の仕業ですのでそこんとこ宜しく :-)
> 内部変数 LOOPCURSOR, TRADLAYOUT の追加。
そろそろ追加すべき新機能もネタ切れになってきたので、最近は
ユーザサイドのリクエストを積極的に採り入れることにしています。
これもその一つ。本家『FD』に極力似せてくれとのこと。
LOOPCURSOR はカーソル移動が画面内で完結してループする機能
です。TRADLAYOUT は情報表示を『FD』のそれに一致させます。
どちらも私が元の仕様を嫌って敢えて変更していたものです。
まぁこの手の interface は好き好きなので、私が嫌だからと言
って他の人まで同意見とは限らないので、option で選べるように
してみました。
> 内部変数 UNICODEBUFFER の追加。
これは、utf8-mac の採用の弊害で table lookup が遅くなって
しまったことに対する配慮のつもりです。table を常に on memory
で持つことで code convert を高速化します。
memory の貧弱な環境では、指定しても memory allocation に失
敗して全然高速化しないとは思いますが、失敗しても error で中
断したりはさせていないので、指定しても無害です。
> UNIX 版にも COMMAND.COM 内蔵コマンドを追加。
「dir」とか「copy」とか「del」とか、今まで MS-DOS 版にのみ
実装されていた COMMAND.COM の組込みコマンドを、UNIX 版でも実
装することにしました。
UNIX 版では「ls」とか「cp」とか「rm」とかいった外部コマン
ドを使えばいいんですけど、wildcard の処理と floppy drive の
扱いで builtin には builtin ならではの優位性がありますので。
MS-DOS が wildcard をコマンド側で処理する仕様にならい、こ
の辺りの COMMAND.COM コマンドは wildcard の展開を行なわずに
コマンド引数に渡すようにしています。
なので、「rename *.c *.bak」といった MS-DOS ライクな技が使
えるんですね。MS-DOS から UNIX に入った人が最初につまづく点
の一つがこれですから、結構有用かも知れません。
あと、「cp A:/hoge .」は出来ませんが「copy A:/hoge .」は可
能です。逆に floppy drive への copy も可能。cp は外部コマン
ドなので、cp 自体に floppy drive 機能が実装されていない限り
これは出来ません。
まぁ、smbsh のように LD_PRELOAD で library 関数を上書きと
いう手法もあるにはあるのですが、この手法は極めて portability
が低いので、余り無理して実装したくはありません。
> グループの異なるファイルが混在すると異常終了していた点を修正。
[FDclone-users:00243] から始まる thread を参照して下さい。
あの暫定 patch よりはきちんと対処してあります。
> カスタマイザで正しくキー割当てできなかった点を修正。
何をトチ狂ったか、選んだものと全然違う機能をキー割当てして
しまっていました。ごめんなさい。
> カスタマイザで正しく上書き保存できないことがあった点を修正。
既存の設定ファイルに上書きした場合、上書き項目に「DOS ドラ
イブ」を選んでしまうと、殆んどの記述を「setdrv」だと思い込ん
で comment out してしまっていました。
これは単に条件節の記述を間違えただけなんですが、本当は「コ
マンド名が setdrv 又は unsetdrv ならば」とすべきところを、間
違えて「コマンド名が setdrv でなくかつ unsetdrv でないならば」
としてしまっていたのでした。そりゃ全ての文字列だってば。
もう一つには、既存のキー割当てやランチャ設定等を削除するよ
うな設定を施していた場合、その削除コマンドを保存ファイルの中
に含めてやれないという支障がありました。
このことはカスタマイザを実装した当初から判っていたことでは
あるのですが、対処が面倒だったので棚上げになっていた箇所です。
前者の bug はこの対処を行なっている過程で見つけたので、怪我
の功明といったところでしょうかね。
しらい たかし