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

[FDclone-users:00819] Re: FDclone 3.00c has been released



 しらいです。

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 は
残っていないんじゃないかと思います。

                                               しらい たかし