christos-time_tハジマタな。
ctype.hの_ctype_ tableの8bit → 32bit化作業をしなきゃならないんだよな。
ちゅうかあれ32bitだと大き過ぎてホントは16bitで充分なんだよな。
#define _CTYPE_A UINT16_C(0x0001) /* Alpha */
#define _CTYPE_C UINT16_C(0x0002) /* Control */
#define _CTYPE_D UINT16_C(0x0004) /* Digit */
#define _CTYPE_G UINT16_C(0x0008) /* Graph */
#define _CTYPE_L UINT16_C(0x0010) /* Lower */
#define _CTYPE_P UINT16_C(0x0020) /* Punct */
#define _CTYPE_S UINT16_C(0x0040) /* Space */
#define _CTYPE_U UINT16_C(0x0080) /* Upper */
#define _CTYPE_X UINT16_C(0x0100) /* Xdigit */
#define _CTYPE_B UINT16_C(0x0200) /* Blank */
#define _CTYPE_R UINT16_C(0x0400) /* Print */
#define _CTYPE_I UINT16_C(0x0800) /* Ideogram */
#define _CTYPE_T UINT16_C(0x1000) /* Special */
#define _CTYPE_Q UINT16_C(0x2000) /* Phonogram */
extern const uint16_t *_ctype_ __RENAME(___ctype_r50);
なぜ今の_RuneTypeが32bitなのかっちゅーと、wcwidth(3)用の情報まで
抱え込んでるからで、そもそもありゃ
先日修正したバグで判明したとおり
実装としてはマチガイなのよな。
どーせbinary compatibility気にしなくていいタイミングなので
_RuneTypeを16bit化して_ctype_とunifyするのと、wcwidth(3)用の情報は
別途8bitでフィールド追加するって感じか、めんどくさいだけで面白くもなんとも無い作業だ…
でもLC_CTYPE locale-dbは互換性の問題で16bitに変更できないので
_FileRune*から_Rune*作るときにon the flyで32bit(_RuneType)から
16bit(_NewRuneType)にしなきゃならんのか、それはそれで無駄なコストで
ケチケチな俺としては了承しかねるな、どうすんべや。
いっそ全部/usr/lib/localeに移してMDなデータにしてlocale-db formatも
Runeよりもっとマシなもんに再構成して一から出直したい気分だ…
せめてアレがcitrus_dbなkey/value形式だったらもっと柔軟に変更できるのだが。
やぱし/var/cache/localeかなー、on the flyでの変換コストはここで吸収しちまうと。
でも断(以下略
やはりRuneつーだけあって呪いの効果は絶大だ…
Please Kill Me読了、Lou Reed先生(the Velvet Underground)のアレっぷりには
いつも心が洗われる。
この顔で
「俺の口にク○させてやる、どうだい、そういうの?」
と初対面の男をナンパし、断られると
「じゃあ俺が顔に皿載せるから、そこへ○ソしてもいい、それならどうだ?」
と斜め上な妥協点を提案するとか、HENTAI過ぎて神々しくもある。
斜め上な妥協点を提案するといえば、 どっかの党首はもうワンパターン過ぎで秋田。
Lou Reedですら売れない頃、タブロイド誌で殺人犯や性犯罪者の
写真モデルのアルバイトやってたんだから、仕事を選り好みしてちゃダメだよね。
ってどんな仕事だwwwそれwww