From: "NARUSE, Yui" Date: 2007-12-05T23:24:41+09:00 Subject: [ruby-dev:32468] Iconv.list patch for NetBSD/Citrus 成瀬です。 NetBSD の Citrus iconv で対応エンコーディングのリストを得るパッチです。 実体と alias がごっちゃになっていますが、それでもそれなりの助けにはなる と思うのでとりあえず。 Index: ext/iconv/iconv.c =================================================================== --- ext/iconv/iconv.c (リビジョン 14101) +++ ext/iconv/iconv.c (作業コピー) @@ -738,6 +738,24 @@ state = *(int *)args; if (state) rb_jump_tag(state); if (args[1]) return args[1]; +#elif defined(HAVE___ICONV_FREE_LIST) + char **list; + size_t sz, i; + VALUE ary; + + if (__iconv_get_list(&list, &sz)) return Qnil; + + ary = rb_ary_new2(sz); + for (i = 0; i < sz; i++) { + rb_ary_push(ary, rb_str_new2(list[i])); + } + __iconv_free_list(list, sz); + + if (!rb_block_given_p()) + return ary; + for (i = 0; i < RARRAY_LEN(ary); i++) { + rb_yield(RARRAY_PTR(ary)[i]); + } #else rb_notimplement(); #endif Index: ext/iconv/extconf.rb =================================================================== --- ext/iconv/extconf.rb (リビジョン 14101) +++ ext/iconv/extconf.rb (作業コピー) @@ -24,6 +24,7 @@ $defs.push('-DICONV_INPTR_CONST') end have_func("iconvlist", "iconv.h") + have_func("__iconv_free_list", "iconv.h") if conf prefix = '$(srcdir)' prefix = $nmake ? "{#{prefix}}" : "#{prefix}/" -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA