Rosetta (cont.)

By ekato

やはり getpeereid(3) で返ってくるはずの euid (例えば 501) が、 Rosetta で起動したアプリだと byte 順が入れ替わって (4110483456 として) 返ってきてました。ということで、native に動いていない場合は、euid = OSSwapInt32(euid) すれば helper にも接続できるようです。

これで問題なく Intel Mac 上でも MacUIM が PPC アプリ上で動くようになったのですが、Rosetta にはその他にも微妙な問題があるようで、uim-anthy で送り仮名ありの語が変換できなくなってしまっていました。Anthy の libanthy の中にバイトオーダーの問題がありそうです。これはちょっとどこがおかしいのか探すのが大変そうです…。まあ、SKK とか PRIME を使っておけば問題ないんですけど。

(16日追記) libanthy じゃなくて、anthy.dic がエンディアン依存になっているのが問題のようでした。どうしたらいいかな… これを解決しないと、universal binary の Anthy は ppc Mac ではまともに動かないし。

(さらに追記) ということで、エンディアン非依存にしてみたところ、Rosetta でも MacUIM の anthy がきちんと動くようになりました。

コメントする