I know I believe in nothing but it is my sweet nothing.:2008年07月13日分

2008/07/13(Sun)

今日

ねこ初盆、おかえりなさいませご主人様。

最後のKonica Minolta CENTURIA Super400使い切った、サクラカラーの末裔よさらば。
ちゅうことでネガは名前だけ継承(中身KodakのOEM)したDNP CENTURIAにスイッチ。
なぜなら安いから。

某家電量販店のカメラコーナーのジャンク箱に割と状態の良い
Minolta α-8700iがぶるぶる震えてたので見かねて保護してきた。

ロバート・キャパ最期の日を読んでて、ハノイは漢字で(かつてはベトナムも漢字圏)
河内と書くことを知った、そうするとハノイロックスって河内音頭(ry

tamoさんとこ、muttは--without-wc-funcsでbuildしてるでしたっけ? (Citrus patch使ってないですよね?)
それならmutt.hでちゃんとOSのMB_LEN_MAXをundefした上で
MB_LEN_MAX=16で再定義してるみたいですが(include順の問題で有効になってない?)。

んで

euc-jp から utf-8 への mutt_convert_string がバッファ不足になってた

のくだりで、コード変換なのにMB_LEN_MAX? ペロリこれは(ryと推理するに
要は この話の問題なんじゃないかなーと(いやちゃんとmuttのソース読んでないけど)。

xvmwareに同梱のiconv_wrapper.cが参考になるかも。

まぁiconv(3)はまともに使えてるコード見たことないしにゃ。
特にinputが'\0'終端されてなきゃoutputも'\0'終端されないなんて
あのプロトタイプ見りゃすぐ判るっしょと思うんだけど
ケアし忘れてオーバーラン系のバグの温床になってたりしまんな。

かといってstrl*みたい常に最期に'\0'を足すような過保護するのも
無理ではないけど、バッファリングしながらの変換には邪魔だし
それにstateful encodingの場合最後に'\0'を足すのには
stateを初期状態に戻すescape sequence吐かんとならんので
バッファ境界の度に冗長な変換が行われてしまうしなー。
それにiconv_tはmbstate_tと違ってsave/restore/duplicateできないし。

あ、あとどうでもいいですがxvmware時々コピペができなくなるバグがあって
おそらくXGetSelectionOwner -> XtOwnSelectionでraceってる予感、そのうち直します。