1.\" Copyright (c) 2002-2004 Tim J. Robbins 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD: head/lib/libc/locale/wcsrtombs.3 132497 2004-07-21 10:54:57Z tjr $ 26.\" 27.Dd December 26, 2013 28.Dt WCSRTOMBS 3 29.Os 30.Sh NAME 31.Nm wcsrtombs , 32.Nm wcsrtombs_l , 33.Nm wcsnrtombs , 34.Nm wcsnrtombs_l 35.Nd "convert a wide-character string to a character string (restartable)" 36.Sh LIBRARY 37.Lb libc 38.Sh SYNOPSIS 39.In wchar.h 40.Ft size_t 41.Fo wcsrtombs 42.Fa "char * restrict dst" "const wchar_t ** restrict src" 43.Fa "size_t len" "mbstate_t * restrict ps" 44.Fc 45.Ft size_t 46.Fo wcsnrtombs 47.Fa "char * restrict dst" "const wchar_t ** restrict src" "size_t nwc" 48.Fa "size_t len" "mbstate_t * restrict ps" 49.Fc 50.In xlocale.h 51.Ft size_t 52.Fo wcsrtombs_l 53.Fa "char * restrict dst" "const wchar_t ** restrict src" 54.Fa "size_t len" "mbstate_t * restrict ps" "locale_t locale" 55.Fc 56.Ft size_t 57.Fo wcsnrtombs_l 58.Fa "char * restrict dst" "const wchar_t ** restrict src" "size_t nwc" 59.Fa "size_t len" "mbstate_t * restrict ps" "locale_t locale" 60.Fc 61.Sh DESCRIPTION 62The 63.Fn wcsrtombs 64and 65.Fn wcsrtombs_l 66functions convert a string of wide characters indirectly pointed to by 67.Fa src 68to a corresponding multibyte character string stored in the array 69pointed to by 70.Fa dst . 71No more than 72.Fa len 73bytes are written to 74.Fa dst . 75.Pp 76If 77.Fa dst 78is 79.Dv NULL , 80no characters are stored. 81.Pp 82If 83.Fa dst 84is not 85.Dv NULL , 86the pointer pointed to by 87.Fa src 88is updated to point to the character after the one that conversion stopped at. 89If conversion stops because a null character is encountered, 90.Fa *src 91is set to 92.Dv NULL . 93.Pp 94The 95.Vt mbstate_t 96argument, 97.Fa ps , 98is used to keep track of the shift state. 99If it is 100.Dv NULL , 101.Fn wcsrtombs 102and 103.Fn wcsrtombs_l 104use an internal, static 105.Vt mbstate_t 106object, which is initialized to the initial conversion state 107at program startup. 108.Pp 109The 110.Fn wcsnrtombs 111and 112.Fn wcsnrtombs_l 113functions behave identically to 114.Fn wcsrtombs 115and 116.Fn wcsrtombs_l , 117except that conversion stops after reading at most 118.Fa nwc 119characters from the buffer pointed to by 120.Fa src . 121.Pp 122The 123.Fn wcsrtombs_l 124and 125.Fn wcsnrtombs_l 126functions take an explicit 127.Fa locale 128argument, whereas the 129.Fn wcsrtombs 130and 131.Fn wcsnrtombs 132functions use the current global or per-thread locale. 133.Sh RETURN VALUES 134The 135.Fn wcsrtombs , 136.Fn wcsrtombs_l , 137.Fn wcsnrtombs , 138and 139.Fn wcsnrtombs_l 140functions return the number of bytes stored in 141the array pointed to by 142.Fa dst 143(not including any terminating null), if successful, otherwise they return 144.Po Vt size_t Pc Ns \-1 . 145.Sh ERRORS 146The 147.Fn wcsrtombs , 148.Fn wcsrtombs_l , 149.Fn wcsnrtombs , 150and 151.Fn wcsnrtombs_l 152functions will fail if: 153.Bl -tag -width Er 154.It Bq Er EILSEQ 155An invalid wide character was encountered. 156.It Bq Er EINVAL 157The conversion state is invalid. 158.El 159.Sh SEE ALSO 160.Xr mbsrtowcs 3 , 161.Xr wcrtomb 3 , 162.Xr wcstombs 3 , 163.Xr xlocale 3 164.Sh STANDARDS 165The 166.Fn wcsrtombs 167function conforms to 168.St -isoC-99 . 169.Pp 170The 171.Fn wcsrtombs_l , 172.Fn wcsnrtombs , 173and 174.Fn wcsnrtombs_l 175functions are an extension to the standard. 176