1mbsnrtowcs(3)              Library Functions Manual              mbsnrtowcs(3)
2
3
4

NAME

6       mbsnrtowcs - convert a multibyte string to a wide-character string
7

LIBRARY

9       Standard C library (libc, -lc)
10

SYNOPSIS

12       #include <wchar.h>
13
14       size_t mbsnrtowcs(wchar_t dest[restrict .len], const char **restrict src,
15                         size_t nms, size_t len, mbstate_t *restrict ps);
16
17   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
18
19       mbsnrtowcs():
20           Since glibc 2.10:
21               _POSIX_C_SOURCE >= 200809L
22           Before glibc 2.10:
23               _GNU_SOURCE
24

DESCRIPTION

26       The  mbsnrtowcs()  function  is  like the mbsrtowcs(3) function, except
27       that the number of bytes to be converted, starting at *src, is  limited
28       to at most nms bytes.
29
30       If  dest  is  not  NULL, the mbsnrtowcs() function converts at most nms
31       bytes from the multibyte string *src to a wide-character string  start‐
32       ing  at  dest.   At  most len wide characters are written to dest.  The
33       shift state *ps is updated.  The conversion is effectively performed by
34       repeatedly  calling mbrtowc(dest, *src, n, ps) where n is some positive
35       number, as long as this call succeeds, and then  incrementing  dest  by
36       one  and *src by the number of bytes consumed.  The conversion can stop
37       for three reasons:
38
39       •  An invalid multibyte sequence has been encountered.  In  this  case,
40          *src is left pointing to the invalid multibyte sequence, (size_t) -1
41          is returned, and errno is set to EILSEQ.
42
43       •  The nms limit forces a stop, or len non-L'\0' wide  characters  have
44          been  stored  at  dest.   In this case, *src is left pointing to the
45          next multibyte sequence to be converted,  and  the  number  of  wide
46          characters written to dest is returned.
47
48       •  The  multibyte  string  has been completely converted, including the
49          terminating null wide character ('\0') (which has the side effect of
50          bringing  back *ps to the initial state).  In this case, *src is set
51          to NULL, and the number of wide characters written to dest,  exclud‐
52          ing the terminating null wide character, is returned.
53
54       According to POSIX.1, if the input buffer ends with an incomplete char‐
55       acter, it is unspecified whether conversion stops at  the  end  of  the
56       previous  character  (if  any), or at the end of the input buffer.  The
57       glibc implementation adopts the former behavior.
58
59       If dest is NULL, len is ignored, and the conversion proceeds as  above,
60       except  that  the converted wide characters are not written out to mem‐
61       ory, and that no destination length limit exists.
62
63       In both of the above cases, if ps is NULL,  a  static  anonymous  state
64       known only to the mbsnrtowcs() function is used instead.
65
66       The  programmer  must  ensure  that there is room for at least len wide
67       characters at dest.
68

RETURN VALUE

70       The mbsnrtowcs() function returns the number of  wide  characters  that
71       make  up the converted part of the wide-character string, not including
72       the terminating null wide character.  If an invalid multibyte  sequence
73       was encountered, (size_t) -1 is returned, and errno set to EILSEQ.
74

ATTRIBUTES

76       For  an  explanation  of  the  terms  used  in  this  section,  see at‐
77       tributes(7).
78
79       ┌─────────────┬───────────────┬────────────────────────────────────────┐
80Interface    Attribute     Value                                  
81       ├─────────────┼───────────────┼────────────────────────────────────────┤
82mbsnrtowcs() │ Thread safety │ MT-Unsafe race:mbsnrtowcs/!ps          │
83       └─────────────┴───────────────┴────────────────────────────────────────┘
84

STANDARDS

86       POSIX.1-2008.
87

NOTES

89       The behavior of mbsnrtowcs() depends on the LC_CTYPE  category  of  the
90       current locale.
91
92       Passing NULL as ps is not multithread safe.
93

SEE ALSO

95       iconv(3), mbrtowc(3), mbsinit(3), mbsrtowcs(3)
96
97
98
99Linux man-pages 6.04              2023-02-05                     mbsnrtowcs(3)
Impressum