[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00819] Re: FDclone 3.00c has been released
- Subject: [FDclone-users:00819] Re: FDclone 3.00c has been released
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Sun, 27 Jul 2008 16:36:41 +0900
しらいです。
In Message-Id <20080727072700.6E8B14805FB@yuka.unixusers.net>
Takashi SHIRAI <shirai@unixusers.net>writes:
> しらいです。
> 以下は HISTORY より今回の変更点の抜粋です。
私用でバタバタしてて、今回は修正から release までに随分時
間が経ってしまってすみません。
> INPUTKCODE=utf8 時のペースト文字列の文字化けを修正。
[FDclone-users:00812] で報告のあった bug に対する修正です。
修正点もこの後流れた patch の内容と同じです。
今気づいたんですが、ここでは「ペースト文字列」って書いてま
すけど実際は打鍵速度が速ければ手入力でも再現しますね。UTF8-
mac だと処理が遅い分打鍵の方が追い付いてしまうのかも。
[FDclone-users:00686] でも解説してますけど、UTF-8 はとかく
厄介ですねー。最近では Linux でも普通に採用されて来てますけ
ど、ちゃんと問題点判って使ってるんでしょうかね?
> ルートディレクトリにアクセスできなかった点を修正。(MS-DOS 版)
パス名の構文解析をする際に、MS-DOS 環境では冒頭の drive 名
を考慮しないといけないのですが、この処理を忘れていたために、
「C:\」のようなパス名を認識出来ていませんでした。
このため、root directory へのアクセスが出来ないという大変
大きな支障が起きていました。
3.00 になってから、この件も含め多くの支障が MS-DOS 版には
発生していたのですが、何故かどこからも報告がありませんでした
ね。もう誰も使ってないのかなー?
> Windows NT で起動に失敗していた点を修正。(MS-DOS 版)
Windows 95 以降の MS-DOS function call に AX=7160 という拡
張 function call があって、LFN と 8+3 形式の filename の変換
を行なっています。
Windows 95/98 ではこの function call は、NUL や AUX といっ
た特殊 device 名に対しても有効なのですが、NT/2000/XP 辺りの
NT architecture では error になる仕様に変わっていました。
そのため、端末に access するために CON デバイスを開こうと
して、「CON」という filename の変換を試みた際に失敗し、その
結果端末に一切 access 出来なくなっていました。
特殊 device 名か否かは純粋に文字列比較して判断するしかなく
て、file access の度にこの比較を行なっていたのでは非常に効率
が悪いので、この function call 失敗時のみ比較しています。
公式には飽くまでも「MS-DOS 版」なので、NT architecture の
対応なんか切り捨てても構わないんですけどね。
> 入出力の改行コードが正しくなかった点を修正。(MS-DOS 版)
3.00 での embug です。3.00 では ANSI 標準の stream I/O 関
数の使用を廃し、全て自前で用意した互換関数を使用していたので
すが、これが MS-DOS 環境に対応出来ていませんでした。
MS-DOS はご存知のとおり改行コードに CR+LF を使うのですが、
これを一般的なプログラムでは内部的に LF のみに置換えて使って
います。
この対応を stream I/O 関数に織込むことで、画面出力や file
I/O の改行コードを正しく扱えるように修正しました。これは意外
と大変な作業でした。
> 組込みコマンド fc の文字列置換えに失敗することがある点を修正。
これは 3.00b で fix した、$()/$(()) が無効になってしまって
いた件と同源の支障です。関数仕様の違いを無視して機能の似た関
数に置換えてしまっていました。
$()/$(()) 問題を修正した際に、他にも同様のミスがあるかも知
れないことについてはある程度想像がついていたのですが、時間が
取れなくて調べ切れていませんでした。
今回ちゃんと調べ直したので、多分もうこの原因による bug は
残っていないんじゃないかと思います。
しらい たかし