« pango-1.44.5を入れる | トップページ | 当面やる事 »

2019年9月15日 (日)

libiconv-1.16

iconvを新しい1.16に入れ直しました。 相関関係の解決のためにgettextも再buildです。

macOSに標準装備のiconvは、1.11ベースに「UTF-8-MAC」を追加したもので、ちょっと古いのですね。
GNUの最新1.16は、「UTF-8-MAC」のエンコード/デコードに対応してません。
APFSはすでにUTF-8なので、徐々に必要なくなっていくのは確かなのですが。

 

じゃ、libiconv-1.16 をUTF-8-MAC対応にpatchあててしまおうか?って思い立ちました。
・/lib/utf8mac.h  追加
・/lib/converters.h  に #include "utf8mac.h"  行追加
・/lib/aliases.gperf  に UTF-8-MAC, ei_utf8mac  行追加
・/lib/flags.h に #define ei_utf8mac_oflags (HAVE_...行追加
・/lib/encodings.def  に DEFENCODING(( "UTF-8-MAC", ...5行追加
・/lib/aliases.h  の #define TOTAL_KEYWORDS 350 ←349から変更
      char stringpool_str390[sizeof("UTF-8-MAC")];行追加
  "UTF-8-MAC", 追加
  {(int)(size_t)&((struct stringpool_t *)0)->stringpool_str390, ei_utf8mac}, 追加

と、ここまでは普通に考えられる。問題は aliases_hash 関数内でのhash検索だ。
"JIS_X0212.1990-0"  と "UTF-8-MAC" が同じ697になってダブってしまう。
なので、len==9の場合には"UTF-8-MAC" で、390をreturnするように分岐を加えた。

Aliasesh

まぁ本当は各chrの重みつけを変更してダブらないようにするのが理想なんだけどね。
これで、libiconv-1.16 にUTF-8-MACを追加できました。
(一応忘備録)

|

« pango-1.44.5を入れる | トップページ | 当面やる事 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« pango-1.44.5を入れる | トップページ | 当面やる事 »