ICONVCTL(3) Library Functions Manual ICONVCTL(3)

# [NAME](#NAME)

iconvctl - control iconv behavior

# [SYNOPSIS](#SYNOPSIS)

```
#include <iconv.h>

int iconvctl (iconv_t cd , int request, void * argument);
```

# [DESCRIPTION](#DESCRIPTION)

The argument *cd* must be a conversion descriptor created using the function **iconv\_open**.

**iconvctl** queries or adjusts the behavior of the **iconv** function, when invoked with the specified conversion descriptor, depending on the request value.

# [REQUEST VALUES](#REQUEST_VALUES)

The following are permissible values for the *request* parameter.

[**ICONV\_TRIVIALP**](#ICONV_TRIVIALP)

*argument* should be an **int \*** which will receive 1 if the conversion is trivial, or 0 otherwise.

[**ICONV\_GET\_TRANSLITERATE**](#ICONV_GET_TRANSLITERATE)

*argument* should be an **int \*** which will receive 1 if transliteration is enabled in the conversion, or 0 otherwise.

[**ICONV\_SET\_TRANSLITERATE**](#ICONV_SET_TRANSLITERATE)

*argument* should be a **const int \***, pointing to an **int** value. A non-zero value is used to enable transliteration in the conversion. A zero value disables it.

[**ICONV\_GET\_DISCARD\_INVALID**](#ICONV_GET_DISCARD_INVALID)

*argument* should be an **int \*** which will receive 1 if "discard invalid multibyte sequence from the input and continue" is enabled in the conversion, or 0 otherwise.

[**ICONV\_SET\_DISCARD\_INVALID**](#ICONV_SET_DISCARD_INVALID)

*argument* should be a **const int \***, pointing to an **int** value. A non-zero value is used to enable "discard invalid multibyte sequence from the input and continue" in the conversion. A zero value disables it.

[**ICONV\_GET\_DISCARD\_NON\_IDENTICAL**](#ICONV_GET_DISCARD_NON_IDENTICAL)

*argument* should be an **int \*** which will receive 1 if "discard character that cannot be represented in the target character set and continue" is enabled in the conversion, or 0 otherwise.

[**ICONV\_SET\_DISCARD\_NON\_IDENTICAL**](#ICONV_SET_DISCARD_NON_IDENTICAL)

*argument* should be a **const int \***, pointing to an **int** value. A non-zero value is used to enable "discard character that cannot be represented in the target character set and continue" in the conversion. A zero value disables it.

[**ICONV\_GET\_DISCARD\_ILSEQ**](#ICONV_GET_DISCARD_ILSEQ)

*argument* should be an **int \*** which will receive 1 if both "discard" behaviours are enabled in the conversion, or 0 otherwise.

[**ICONV\_SET\_DISCARD\_ILSEQ**](#ICONV_SET_DISCARD_ILSEQ)

*argument* should be a **const int \***, pointing to an **int** value. A non-zero value is used to enable both "discard" behaviours in the conversion. A zero value disables them.

[**ICONV\_GET\_FROM\_SURFACE**](#ICONV_GET_FROM_SURFACE)

*argument* should be an **unsigned int \*** which will receive the from-side (input side) surface of the conversion.

[**ICONV\_SET\_FROM\_SURFACE**](#ICONV_SET_FROM_SURFACE)

*argument* should be a **const unsigned int \***, pointing to an **unsigned int** value. This value is installed as the from-side (input side) surface of the conversion. The value is a bit mask. Zero denotes no surface. The value **ICONV\_SURFACE\_EBCDIC\_ZOS\_UNIX** has an effect on EBCDIC encodings: The EBCDIC newline 0x15 will get mapped to LF instead of NEL.

[**ICONV\_GET\_TO\_SURFACE**](#ICONV_GET_TO_SURFACE)

*argument* should be an **unsigned int \*** which will receive the to-side (output side) surface of the conversion.

[**ICONV\_SET\_TO\_SURFACE**](#ICONV_SET_TO_SURFACE)

*argument* should be a **const unsigned int \***, pointing to an **unsigned int** value. This value is installed as the to-side (output side) surface of the conversion. The value is a bit mask. Zero denotes no surface. The value **ICONV\_SURFACE\_EBCDIC\_ZOS\_UNIX** has an effect on EBCDIC encodings: LF, instead of NEL, will get mapped to the EBCDIC newline 0x15.

# [RETURN VALUE](#RETURN_VALUE)

The **iconvctl** function returns 0 if it succeeds. In case of error, it sets **errno** and returns -1.

# [ERRORS](#ERRORS)

The following errors can occur, among others:

[**EINVAL**](#EINVAL)

The request is invalid.

# [CONFORMING TO](#CONFORMING_TO)

This function is implemented only in GNU libiconv and not in other **iconv** implementations. It is not backed by a standard. You can test for its presence through **(\_LIBICONV\_VERSION &gt;= 0x0108)**.

# [SEE ALSO](#SEE_ALSO)

[**iconv\_open**(3)](/man/os/gnu-libiconv/iconv_open.3) [**iconv**(3)](/man/os/gnu-libiconv/iconv.3)

December 15, 2024 GNU

---

Document: iconvctl(3) from gnu-libiconv 1.19-r8 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/libiconv.git
