idn2\_register\_ul(3) libidn2 idn2\_register\_ul(3)

# [NAME](#NAME)

idn2\_register\_ul - API function

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;idn2.h&gt;**

**int idn2\_register\_ul(const char * ulabel, const char * alabel, char \** insertname, int flags);**

# [ARGUMENTS](#ARGUMENTS)

[const char * ulabel](#const)

input zero-terminated locale encoded string, or NULL.

[const char * alabel](#const~2)

input zero-terminated ACE encoded string (xn--), or NULL.

[char \** insertname](#char)

newly allocated output variable with name to register in DNS.

[int flags](#int)

optional **idn2\_flags** to modify behaviour.

# [DESCRIPTION](#DESCRIPTION)

Perform IDNA2008 register string conversion on domain label *ulabel* and *alabel* , as described in section 4 of RFC 5891. Note that the input *ulabel* is assumed to be encoded in the locale's default coding system, and will be transcoded to UTF-8 and NFC normalized by this function.

It is recommended to supply both *ulabel* and *alabel* for better error checking, but supplying just one of them will work. Passing in only *alabel* is better than only *ulabel* . See RFC 5891 section 4 for more information.

After version 0.11: *insertname* may be NULL to test conversion of *src* without allocating memory.

# [RETURNS](#RETURNS)

On successful conversion **IDN2\_OK** is returned, when the given *ulabel* and *alabel* does not match each other **IDN2\_UALABEL\_MISMATCH** is returned, when either of the input labels are too long **IDN2\_TOO\_BIG\_LABEL** is returned, when *alabel* does does not appear to be a proper A-label **IDN2\_INVALID\_ALABEL** is returned, when *ulabel* locale to UTF-8 conversion failed **IDN2\_ICONV\_FAIL** is returned, or another error code is returned.

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to &lt;help-libidn@gnu.org&gt;.  
General guidelines for reporting bugs: https://www.gnu.org/gethelp/  
Libidn2 home page: https://www.gnu.org/software/libidn2/

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2002-2025 Simon Josefsson.  
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.

# [SEE ALSO](#SEE_ALSO)

The full documentation for **libidn2** is maintained as a Texinfo manual. If the **info** and **libidn2** programs are properly installed at your site, the command

**info libidn2**

should give you access to the complete manual. As an alternative you may obtain the manual from:

**https://www.gnu.org/software/libidn/libidn2/manual/**

2.3.8 libidn2

---

Document: idn2_register_ul(3) from libidn2 2.3.8-r10 (Chainguard OS)
Source: https://gitlab.com/libidn/libidn2
