2004年05月14日

jnethack3.4.3-0.3のインストール for Solaris9

ソースはjnethack projectからとってきた。

何もせずにmake;make install すると、職業選択時の日本語や、モンスターの日本語が表示されない。
「巨大蟻をたおした」が「をたおした」になってしまう。

include/jdata.hが正しく作成されないのが問題だった。
include/jdata.hには、英語と日本語の対応テーブルが書かれているのだが、日本語の部分が空白になっていた。

include/jdata.hは、"util/makedefs -j"で作成される。
util/makedefバイナリはmake中で作成され、make中で実行される。

util/makedefのソースを調べてみた。
"makedefs -j"と打ったとき、makedefs.cの中の"do_japanese()"が実行され、jdata.hが作成される。
do_japanese()では、split_string()を使ってdata/jtrnsmon.datやdata/jtrnsobj.datから日本語と英語を読み出している。split_string()にデバッグ文を入れて実行してみると、isspace()がおかしな動きをしている。日本語も空白文字だと認識してしまっているのだ。
ためしに、isspace(*p)の部分を*p == ' ' || *p == '\t'に書き換えるとうまくjdata.hの対応テーブルが作成された。isblank(*p)にしてもいいのかもしれない。
きっとSolarisではisspace()に問題があるのだろう。

早い話が、日本語モンスター名が表示されなかったら、util/makedefs.cのisspace(*P)を書き換えろということだ。

Posted by skiyo at 2004年05月14日 21:21 | TrackBack
Comments
Post a comment









Remember personal info?