<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta name="Content-Style" content="text/css">
<title>ICONV_OPEN_INTO</title>
</head>
<body>

<h1 align=center>ICONV_OPEN_INTO</h1>
<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#RETURN VALUE">RETURN VALUE</a><br>
<a href="#ERRORS">ERRORS</a><br>
<a href="#CONFORMING TO">CONFORMING TO</a><br>
<a href="#SEE ALSO">SEE ALSO</a><br>

<hr>
<!-- Creator     : groff version 1.17.2 -->
<!-- CreationDate: Sun Sep 21 20:17:11 2008 -->
<a name="NAME"></a>
<h2>NAME</h2>
<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
iconv_open_into - initialize descriptor for character set conversion</td></table>
<a name="SYNOPSIS"></a>
<h2>SYNOPSIS</h2>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
<pre><b>#include &lt;iconv.h&gt;

int iconv_open_into (const char*</b> <i>tocode</i><b>, const char*</b> <i>fromcode</i><b>,
                     iconv_allocation_t*</b> <i>resultp</i><b>);
</b></pre></td></table>
<a name="DESCRIPTION"></a>
<h2>DESCRIPTION</h2>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
The <b>iconv_open_into</b> function initializes a conversion
descriptor suitable for converting byte sequences from
character encoding <i>fromcode</i> to character encoding
<i>tocode</i>. The conversion descriptor is stored in the
memory pointed to by <i>resultp</i>.</td></table>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
The values permitted for <i>fromcode</i> and <i>tocode</i>
are the same as for the function
<b>iconv_open</b>.</td></table>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
After a successful return from this function, <i>resultp</i>
can be be used as an <b>iconv_t</b> object with the
<b>iconv</b> function.</td></table>
<a name="RETURN VALUE"></a>
<h2>RETURN VALUE</h2>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
The <b>iconv_open_into</b> function fills
<b>*</b><i>resultp</i> and returns 0 if it succeeds. In case
of error, it sets <b>errno</b> and returns -1.</td></table>
<a name="ERRORS"></a>
<h2>ERRORS</h2>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
The following error can occur, among others:</td></table>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
<b>EINVAL</b></td></table>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="21%"></td><td width="79%">
The conversion from <i>fromcode</i> to <i>tocode</i> is not
supported by the implementation.</td></table>
<a name="CONFORMING TO"></a>
<h2>CONFORMING TO</h2>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
This function is implemented only in GNU libiconv and not in
other <b>iconv</b> implementations. It is not backed by a
standard. You can test for its presence through
<b>(_LIBICONV_VERSION &gt;= 0x010D)</b>.</td></table>
<a name="SEE ALSO"></a>
<h2>SEE ALSO</h2>

<table width="100%" border=0 rules="none" frame="void"
       cols="2" cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="10%"></td><td width="90%">
<b>iconv_open</b>(3) <b>iconv</b>(3)</td></table>
<hr>
</body>
</html>
