蝉は、やがて死ぬる午後に気づいた。ああ、私たち、もっと仕合せになってよかったのだ。:2003年03月26日分

2003/03/26(Wed)

gbk2k module

@何がだめぽかってーと

wchar_tもrunetype.hの__nbrune_tもsignedだという(滝汗)初歩的なアレ。
unsignedな32bitと勘違いしてた漏れはそのまま何も考えずに
0x81308130からのGB18030をwchar_tに突っ込んでますたと。
これじゃぁwctype周りはマトモに動作しないよなぁ、あー恥ずかしい。
サボらずmklocaleファイルを書いてりゃ気づいたものを...

@じゃあどうするかってーと

0x81308130 - 0xfe39fe39の範囲を無理矢理signedの範囲に納める、なんだけど
mklocaleにその為のルールをどうやって教えるかが問題だ罠。
mklocaleはISO2022の場合だと`CHARSET'トークンをみて
wchar_tの内部表現ルールに変換してるので、GB18030も同等の処理が必要だなぁ。

@mklocale

どうやら

CHARSET charsetbit charsetmask

という書式を受けつけるので、既存のmklocaleファイルの記述ルールを
変更する必要は無いけども、unsignedが通るようにmklocaleを修正する必要あるっぽい。