The Open Group Base Specifications Issue 7
IEEE Std 1003.1, 2013 Edition
Copyright © 2001-2013 The IEEE and The Open Group

#### NAME

> wcsxfrm, wcsxfrm_l - wide-character string transformation

#### SYNOPSIS

> ``#include <wchar.h>
> size_t wcsxfrm(wchar_t *restrict` ws1`, const wchar_t *restrict` ws2`,
> size_t` n`);
> ``

> ``[CX] size_t wcsxfrm_l(wchar_t *restrict` ws1`, const wchar_t *restrict` ws2`,
> size_t` n`, locale_t` locale`);``
> `
> `

#### DESCRIPTION

> For wcsxfrm(): [CX] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2008 defers to the ISO C standard.

> The wcsxfrm() [CX] and wcsxfrm_l() functions shall transform the wide-character string pointed to by ws2 and place the resulting wide-character string into the array pointed to by ws1. The transformation shall be such that if wcscmp() is applied to two transformed wide strings, it shall return a value greater than, equal to, or less than 0, corresponding to the result of wcscoll() [CX] and wcscoll_l() applied to the same two original wide-character strings, and the same LC_COLLATE category of the current locale [CX] or the locale object locale, respectively. No more than n wide-character codes shall be placed into the resulting array pointed to by ws1, including the terminating null wide-character code. If n is 0, ws1 is permitted to be a null pointer. If copying takes place between objects that overlap, the behavior is undefined.

> [CX] The wcsxfrm() and wcsxfrm_l() functions shall not change the setting of errno if successful.

> Since no return value is reserved to indicate an error, an application wishing to check for error situations should set errno to 0, then call wcsxfrm() or wcsxfrm_l(), then check errno.

> The behavior is undefined if the locale argument to wcsxfrm_l() is the special locale object LC_GLOBAL_LOCALE or is not a valid locale object handle.

#### RETURN VALUE

> The wcsxfrm() [CX] and wcsxfrm_l() functions shall return the length of the transformed wide-character string (not including the terminating null wide-character code). If the value returned is n or more, the contents of the array pointed to by ws1 are unspecified.

> [CX] On error, the wcsxfrm() and wcsxfrm_l() functions may set errno, but no return value is reserved to indicate an error.

#### ERRORS

> These functions may fail if:

> [EINVAL]
>   [CX] The wide-character string pointed to by ws2 contains wide-character codes outside the domain of the collating sequence.

The following sections are informative.

#### EXAMPLES

> None.

#### APPLICATION USAGE

> The transformation function is such that two transformed wide-character strings can be ordered by wcscmp() as appropriate to collating sequence information in the current locale (category LC_COLLATE).

> The fact that when n is 0 ws1 is permitted to be a null pointer is useful to determine the size of the ws1 array prior to making the transformation.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> wcscmp, wcscoll

> XBD <wchar.h>

#### CHANGE HISTORY

> First released in Issue 4. Derived from the MSE working draft.

#### Issue 5

> Moved from ENHANCED I18N to BASE and the [ENOSYS] error is removed.

> The DESCRIPTION is updated to indicate that errno is not changed if the function is successful.

#### Issue 6

> In earlier versions, this function was required to return -1 on error.

> Extensions beyond the ISO C standard are marked.

> The following new requirements on POSIX implementations derive from alignment with the Single UNIX Specification:

> - In the RETURN VALUE and ERRORS sections, the [EINVAL] optional error condition is added if no conversion could be performed.

> The wcsxfrm() prototype is updated for alignment with the ISO/IEC 9899:1999 standard.

#### Issue 7

> The wcsxfrm_l() function is added from The Open Group Technical Standard, 2006, Extended API Set Part 4.

> POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0728 [302], XSH/TC1-2008/0729 [283], XSH/TC1-2008/0730 [283], and XSH/TC1-2008/0731 [302] are applied.

End of informative text.

return to top of page

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
Copyright © 2001-2013 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]