---
name: "stringprep_4i"
section: "3"
platform: "linux"
package: "libidn"
version: "1.44-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/stringprep_4i"
---

# stringprep\_4i(3)

API function

## NAME

stringprep\_4i - API function

## SYNOPSIS

**#include \<stringprep.h\>**

**int stringprep\_4i(uint32\_t \*** *ucs4***, size\_t \*** *len***, size\_t** *maxucs4len***, Stringprep\_profile\_flags** *flags***, const Stringprep\_profile \*** *profile***);**

## ARGUMENTS

- uint32\_t \* ucs4

  input/output array with string to prepare.

- size\_t \* len

  on input, length of input array with Unicode code points, on exit, length of output array with Unicode code points.

- size\_t maxucs4len

  maximum length of input/output array.

- Stringprep\_profile\_flags flags

  a **Stringprep\_profile\_flags** value, or 0.

- const Stringprep\_profile \* profile

  pointer to **Stringprep\_profile** to use.

## DESCRIPTION

Prepare the input UCS-4 string according to the stringprep profile, and write back the result to the input string.

The input is not required to be zero terminated ( *ucs4* \[ *len* \] = 0). The output will not be zero terminated unless  *ucs4* \[ *len* \] = 0. Instead, see **stringprep\_4zi()** if your input is zero terminated or if you want the output to be.

Since the stringprep operation can expand the string,  *maxucs4len* indicate how large the buffer holding the string is.  This function will not read or write to code points outside that size.

The  *flags* are one of **Stringprep\_profile\_flags** values, or 0.

The  *profile* contain the **Stringprep\_profile** instructions to perform.  Your application can define new profiles, possibly reusing the generic stringprep tables that always will be part of the library, or use one of the currently supported profiles.

Return value: Returns **STRINGPREP\_OK** iff successful, or an **Stringprep\_rc** error code.

## DESCRIPTION

Prepare the input UCS-4 string according to the stringprep profile, and write back the result to the input string.

The input is not required to be zero terminated ( *ucs4* \[ *len* \] = 0). The output will not be zero terminated unless  *ucs4* \[ *len* \] = 0. Instead, see **stringprep\_4zi()** if your input is zero terminated or if you want the output to be.

Since the stringprep operation can expand the string,  *maxucs4len* indicate how large the buffer holding the string is.  This function will not read or write to code points outside that size.

The  *flags* are one of **Stringprep\_profile\_flags** values, or 0.

The  *profile* contain the **Stringprep\_profile** instructions to perform.  Your application can define new profiles, possibly reusing the generic stringprep tables that always will be part of the library, or use one of the currently supported profiles.

Return value: Returns **STRINGPREP\_OK** iff successful, or an **Stringprep\_rc** error code.

## REPORTING BUGS

Report bugs to \<help-libidn@gnu.org\>.\
 General guidelines for reporting bugs: https://www.gnu.org/gethelp/\
 GNU Libidn home page: https://www.gnu.org/software/libidn/

## COPYRIGHT

Copyright © 2002-2026 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

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

-

  **info libidn**

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

-

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