I know I believe in nothing but it is my sweet nothing.:2004年01月23日分

2004/01/23(Fri)

(tbs

@ungetwc

結論としてはstateful ecnodingの場合はまともな方法では無理ぽ。

HZ-GB2312 で考えた場合、

~{!!~}ABCD

つーmultibyte sequenceがあった場合、こいつをinitial stateでfgetwc() すると
wc = GB2312 0x2121で、先頭4byte ~{!! までが wide character に変換され、
fp には

~}ABCD

が残るわけ。ここで ASCII の文字 'Z' を ungetwc() すると
~}Z を fp に書き戻し、

~}Z~}ABCD

という multibye sequence になるのだけど、ASCII の ~} つー escape sequcence が
重複してしまい、 EILSEQ になるんよね。
fp が ~} の ASCII の escape sequence で 始まる場合は、
~}Z~{ をfpに書き戻せば

~}Z~{~}ABCD

になり正しい mutibyte sequence になるけども、
ungetwc() する時点では 無理矢理 fp を先読みしない限り、
そいつぁー判断できないのよね...

@x.org + XFree86

http://slashdot.jp/article.pl?sid=04/01/23/0354231&topic=84&mode=flat&threshold=-1
えーっと、樋浦氏が x.org は Xutf8* は 絶対に accept しないといってた件もチャラ?
いや、いまさら無理だってのは判るけど:-)