[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00559] Re: patch当ててみたのですが
- Subject: [FDclone-users:00559] Re: patch当ててみたのですが
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Thu, 10 Aug 2006 23:47:48 +0900
しらいです。
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 で追って貰うのが一番確実なんですけどね。
しらい たかし