1 /*
2 Copyright (c) 2002 Thomas Fitzsimmons <fitzsim@redhat.com>
3  */
4 #include <wchar.h>
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include <errno.h>
8 #include "local.h"
9 
10 size_t
wcrtomb(char * __restrict s,wchar_t wc,mbstate_t * __restrict ps)11 wcrtomb (char *__restrict s,
12 	wchar_t wc,
13 	mbstate_t *__restrict ps)
14 {
15   int retval = 0;
16   char buf[10];
17 
18 #ifdef _MB_CAPABLE
19   if (ps == NULL)
20     {
21       static NEWLIB_THREAD_LOCAL mbstate_t _wcrtomb_state;
22       ps = &_wcrtomb_state;
23     }
24 #endif
25 
26   if (s == NULL)
27     retval = __WCTOMB (buf, L'\0', ps);
28   else
29     retval = __WCTOMB (s, wc, ps);
30 
31   if (retval == -1)
32     {
33       ps->__count = 0;
34       _REENT_ERRNO(reent) = EILSEQ;
35       return (size_t)(-1);
36     }
37   else
38     return (size_t)retval;
39 }
40