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)11wcrtomb (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