1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
'\" t
.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" References consulted:
.\" GNU glibc-2 source code and manual
.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\" ISO/IEC 9899:1999
.\"
.TH wcrtomb 3 2024-06-15 "Linux man-pages (unreleased)"
.SH NAME
wcrtomb \- convert a wide character to a multibyte sequence
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <wchar.h>
.P
.BI "size_t wcrtomb(char *restrict " s ", wchar_t " wc \
", mbstate_t *restrict " ps );
.fi
.SH DESCRIPTION
The main case for this function is when
.I s
is
not NULL and
.I wc
is not a null wide character (L\[aq]\[rs]0\[aq]).
In this case, the
.BR wcrtomb ()
function
converts the wide character
.I wc
to its multibyte representation and stores it
at the beginning of the character
array pointed to by
.IR s .
It updates the shift state
.IR *ps ,
and
returns the length of said multibyte representation,
that is, the number of bytes
written at
.IR s .
.P
A different case is when
.I s
is not NULL,
but
.I wc
is a null wide character (L\[aq]\[rs]0\[aq]).
In this case, the
.BR wcrtomb ()
function stores at
the character array pointed to by
.I s
the shift sequence needed to
bring
.I *ps
back to the initial state,
followed by a \[aq]\[rs]0\[aq] byte.
It updates the shift state
.I *ps
(i.e., brings
it into the initial state),
and returns the length of the shift sequence plus
one, that is, the number of bytes written at
.IR s .
.P
A third case is when
.I s
is NULL.
In this case,
.I wc
is ignored,
and the function effectively returns
.P
.in +4n
.EX
wcrtomb(buf, L\[aq]\[rs]0\[aq], ps)
.EE
.in
.P
where
.I buf
is an internal anonymous buffer.
.P
In all of the above cases, if
.I ps
is NULL, a static anonymous
state known only to the
.BR wcrtomb ()
function is used instead.
.SH RETURN VALUE
The
.BR wcrtomb ()
function returns the number of
bytes that have been or would
have been written to the byte array at
.IR s .
If
.I wc
can not be
represented as a multibyte sequence (according to the current locale),
.I (size_t)\ \-1
is returned, and
.I errno
set to
.BR EILSEQ .
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
.na
.nh
.BR wcrtomb ()
T} Thread safety MT-Unsafe race:wcrtomb/!ps
.TE
.SH STANDARDS
C11, POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, C99.
.SH NOTES
The behavior of
.BR wcrtomb ()
depends on the
.B LC_CTYPE
category of the
current locale.
.P
Passing NULL as
.I ps
is not multithread safe.
.SH SEE ALSO
.BR mbsinit (3),
.BR wcsrtombs (3)
|