ruby-changes:2624
From: ko1@a...
Date: 6 Dec 2007 01:07:29 +0900
Subject: [ruby-changes:2624] naruse - Ruby:r14115 (trunk): * ext/iconv/iconv.c (iconv_s_list): support NetBSD/Citrus iconv.
naruse 2007-12-06 01:04:12 +0900 (Thu, 06 Dec 2007) New Revision: 14115 Modified files: trunk/ChangeLog trunk/ext/iconv/extconf.rb trunk/ext/iconv/iconv.c Log: * ext/iconv/iconv.c (iconv_s_list): support NetBSD/Citrus iconv. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/iconv/iconv.c?r1=14115&r2=14114 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14115&r2=14114 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/iconv/extconf.rb?r1=14115&r2=14114 Index: ChangeLog =================================================================== --- ChangeLog (revision 14114) +++ ChangeLog (revision 14115) @@ -1,3 +1,7 @@ +Thu Dec 6 01:00:38 2007 NARUSE, Yui <naruse@r...> + + * ext/iconv/iconv.c (iconv_s_list): support NetBSD/Citrus iconv. + Wed Dec 5 16:18:50 2007 Nobuyoshi Nakada <nobu@r...> * proc.c (rb_proc_s_new): call initialize. [ruby-core:13824] Index: ext/iconv/iconv.c =================================================================== --- ext/iconv/iconv.c (revision 14114) +++ ext/iconv/iconv.c (revision 14115) @@ -741,6 +741,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 (revision 14114) +++ ext/iconv/extconf.rb (revision 14115) @@ -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}/" -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml