# Iconv.list patch for NetBSD/Citrus

**URL:** <https://www.ruby-forum.com/t/iconv-list-patch-for-netbsd-citrus/122204>\
**Category:** Development\
**Created:** [December 5, 2007, 3:28pm UTC](https://www.ruby-forum.com/t/iconv-list-patch-for-netbsd-citrus/122204 "2007-12-05T15:28:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [December 5, 2007, 3:28pm UTC](https://www.ruby-forum.com/t/iconv-list-patch-for-netbsd-citrus/122204/1 "2007-12-05T15:28:24Z")

</div>

e$B@.@%$G$9!#e(B

NetBSD e$B$Ne(B Citrus iconv  
e$B$GBP1~%(%s%3!\<%G%#%s%0$N%j%9%H$rF@$k%Q%C%A$G$9!#e(B  
e$B\<BBN$He(B alias  
e$B$,$4$C$A$c$K$J$C$F$$$^$9$,!"$=$l$G$b$=$l$J$j$N=u$1$K$O$J$ke(B  
e$B$H;W$&$N$G$H$j$"$($:!#e(B

# Index: ext/iconv/iconv.c

— ext/iconv/iconv.c (e$B%j%S%8%g%se(B 14101)  
+++ ext/iconv/iconv.c (e$B:n6H%3%T!\<e(B)  
@@ -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 (e$B%j%S%8%g%se(B 14101)  
+++ ext/iconv/extconf.rb (e$B:n6H%3%T!\<e(B)  
@@ -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}/”

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [December 5, 2007, 3:48pm UTC](https://www.ruby-forum.com/t/iconv-list-patch-for-netbsd-citrus/122204/2 "2007-12-05T15:48:21Z")

</div>

e$B$J$+$@$G$9!#e(B

At Wed, 5 Dec 2007 23:24:41 +0900,  
NARUSE, Yui wrote in [ruby-dev:32468]:

> NetBSD e$B$Ne(B Citrus iconv e$B$GBP1~%(%s%3!\<%G%#%s%0$N%j%9%H$rF@$k%Q%C%A$G$9!#e(B  
> e$B\<BBN$He(B alias e$B$,$4$C$A$c$K$J$C$F$$$^$9$,!"$=$l$G$b$=$l$J$j$N=u$1$K$O$J$ke(B  
> e$B$H;W$&$N$G$H$j$"$($:!#e(B

\_\_e$B$G;O$^$C$F$$$k$"$?$j$,!"\>C$($?$j$7$J$$$+$A$g$C$HIT0B$J5$$b$7$^e(B  
e$B$9$,!"F~$l$F$\*$$$F$/$@$5$$!#e(B

---

<div class="post-metadata">

**Author:** ![NARUSES\_Yui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/258eb7/32.png) [@NARUSES\_Yui](https://www.ruby-forum.com/u/NARUSES_Yui)\
**Post date:** [December 5, 2007, 6:21pm UTC](https://www.ruby-forum.com/t/iconv-list-patch-for-netbsd-citrus/122204/3 "2007-12-05T18:21:06Z")

</div>

e$B@.@%$G$9!#e(B

Nobuyoshi N. wrote:

> e$B$J$+$@$G$9!#e(B
> 
> At Wed, 5 Dec 2007 23:24:41 +0900,  
> NARUSE, Yui wrote in [ruby-dev:32468]:
> 
> > NetBSD e$B$Ne(B Citrus iconv e$B$GBP1~%(%s%3!\<%G%#%s%0$N%j%9%H$rF@$k%Q%C%A$G$9!#e(B  
> > e$B\<BBN$He(B alias e$B$,$4$C$A$c$K$J$C$F$$$^$9$,!"$=$l$G$b$=$l$J$j$N=u$1$K$O$J$ke(B  
> > e$B$H;W$&$N$G$H$j$"$($:!#e(B
> 
> \_\_e$B$G;O$^$C$F$$$k$"$?$j$,!"\>C$($?$j$7$J$$$+$A$g$C$HIT0B$J5$$b$7$^e(B  
> e$B$9$,!"F~$l$F$\*$$$F$/$@$5$$!#e(B

r14115 e$B$K$F%3%\_%C%H$7$^$7$?!#e(B  
e$B$J$_e(B iconv.h  
e$B$G$O0J2\<$NDL$j$K$J$C$F$$$?$N$G!"\<B83E_$H$$$&$h$j$O2DHB$8$ce(B  
e$B$J$$$H$$$&0UL#$Ge(B\_\_e$B;O$^$j$J$N$+$J$!$H;W$C$F$$$^$9!#e(B

/\*

- non-portable interfaces for iconv  
\*/  
int \_\_iconv\_get\_list(char \*\*\*, size\_t \*);  
void \_\_iconv\_free\_list(char \*\*, size\_t);  
size\_t \_\_iconv(iconv\_t, const char \*\*, size\_t \*, char \*\*,  
size\_t \*, \_\_uint32\_t, size\_t \*);
