init_messages()でiconv_open()、得られたcdはsj3全体で使い回し…iconv_close()の呼び出しは不要、でいいかな?eucmessages.cを見るに、
WcMessages[0] = (wchar16_t *) malloc(all_len * sizeof(wchar16_t));
これに対するfree()は無いので。
OpenBSD(uaa@), Ham(JG1UAA), Ingress(Lv14, RES), Japanese(Sagamihara-city, Kanagawa)
Another side: https://social.tchncs.de/@uaa
npub1rarr265r9f9j6ewp960hcm7cvz9zskc7l2ykwul57e7xa60r8css7uf890
Messages from this Mastodon account can read via mostr.pub with npub1j3un8843rpuk4rvwnd7plaknf2lce58yl6qmpkqrwt3tr5k60vfqxmlq0w
init_messages()でiconv_open()、得られたcdはsj3全体で使い回し…iconv_close()の呼び出しは不要、でいいかな?eucmessages.cを見るに、
WcMessages[0] = (wchar16_t *) malloc(all_len * sizeof(wchar16_t));
これに対するfree()は無いので。
ぶっちゃけ、今はEUCで、将来はUTF-8で内部を動かすことになると思うんだけど…setlocale()で文字コード設定を拾っといて、iconv()で内部コードから外部のコードに変換する作りで十分って気がする。C localeならUTF-8扱いでも今は問題ない気がするし。
sj3のロケールチェックって、どの程度必要性があるんだろう?別にja以外のロケールだってsj3を動かしてはいけない理由は無いのだし(日本語話者以外にとって意味不明な文字列が表示されるだけなのだし)。おそらくwcstombs(), mbstowcs()の類が正常に動かないから止めるとかそんな理由なんだろうとは思う。
jaかどうかのチェックは不要として、使用する文字コード…EUC, SJIS, UTF-8を取得する目的でロケール情報を取るというのであれば、それは理解できるんだけど。
というか、ロケールの設定に依存しない作りにする方が堅牢なコードになると思うんだけどどうなんだろう?EUCなりUTF-8なりで内部は処理して、APIの出口だってEUCかそれ以外って規定しているなら別にロケールの設定とか要らんはずだし。
ごめん、sj3.h, sj3priv.hの再編は多分無理。SJ3_OBJSでsj3を構築するのに必要な宣言をsj3.hとsj3priv.hに分けてるけど、これ以上まとめようがないような…