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

[FDclone-users:00559] Re: patch当ててみたのですが



 しらいです。

In Message-Id <20060810225122.558348.044d1aa0@isis.ocn.ne.jp>
        yuji tamura <yuji@isis.ocn.ne.jp>さんwrites:
> こんばんは、田村です。

>  [FDclone-users:00556] のpatchを当ててみました。
> 
> UNICODEBUFFER=1を指定しない場合、普通に起動でき
> 日本語ファイル名もきちんと表示されます。
> 
> UNICODEBUFFER=1を指定した場合、
> ./fd で起動しようとするがプロンプトが固まって起動できない、
> ^C で止めると Illegal instruction の表示が出て
> コマンドプロンプトに戻る、と言う結果になってしまいました。

 んー、そもそも何がトリガーになっているんでしょうね。-N 付
きで起動して、option として一つずつ機能をしていくと何が原因
か特定出来ると思います。
	1.「fd -N」
	2.「fd -N -UNICODEBUFFER=1」
	3.「fd -N -UNICODEBUFFER=1 -FNAMEKCODE=utf8-mac」
 多分 1., 2. は大丈夫で 3. で落ちると思います。そうでないよ
うなら再考が必要ですね。3. でも落ちないようなら、~/.fd2rc の
設定を見ながら更に一つずつ追加していってみて下さい。

 で、そのうちどこかで落ちるようにあると思うので、今度はその
落ちる option の組合せで原因を探してみましょう。
 まずは、[FDclone-users:00556] の patch が効かないようなの
で、kanji.c の patch の箇所にある Xopen() を只の open() に変
更してみて下さい。
 それで動くようになるようなら、次は open() を Xopen() に戻
して dosemu.c にある Xopen() の方をいじってみましょう。

 勿論「fd = open(path, flags, mode);」以外の部分を全部削除
してしまえば open() と同じになるので動くようになると思います。
なので、その状態の手前まで 1 step ずつ削除します。
 Xopen() の構成は、本体の open() のある行、convput() のある
行、そして二つの #ifndef で囲まれた部分、これら四つの部分か
ら成っています。
 open() の行は消せないので、それ以外の三箇所を順次削除して
みて下さい。それぞれを削除した状態で compile してみると、ど
れを削除した時点で動くようになるでしょうか?
 削除の代わりに comment out でも構いませんが、行単位で消す
と compile 出来なくなるので、上で説明したブロック単位で消し
て下さいね。

 多分、convput() を削除した時点で動くようになると思うんです
が、もしそうなら、convput() は変数 noconv を 0 以外の値にす
ることで何もしない関数になる筈なんですけどねー。
 [FDclone-users:00556] の patch で Xopen() の前後に noconv
を操作している箇所がありますが、その部分が Xopen() の中から
convput() を無効にしている箇所です。
 それが何故か効いていないのか、もしくはそれとは別の原因で落
ちているのか、原因は何でしょうかね?

 とにかく、Mac OS X 以外の環境では上の 3. の option で無事
に動くので、Mac OS X 独特の事情があるのかも知れませんね。
 可能性が色々考えられるので検証法を幾つも挙げてしまいました
が、地道に一つずつ可能性を潰していってみて下さい。勿論、使え
るようなら debugger で追って貰うのが一番確実なんですけどね。

                                               しらい たかし