small_wcrtomb.c
00001 #include <reent.h>
00002 #include <wchar.h>
00003 #include <stdlib.h>
00004 #include <stdio.h>
00005 #include <errno.h>
00006
00007 #if defined( _SMALL_PRINTF ) || defined(SMALL_SCANF)
00008 #define _ASCII_CAR
00009 #endif
00010
00011 size_t
00012 _DEFUN (_wcrtomb_r, (ptr, s, wc, ps),
00013 struct _reent *ptr _AND
00014 char *s _AND
00015 wchar_t wc _AND
00016 mbstate_t *ps)
00017 {
00018
00019 #ifndef _ASCII_CAR
00020 int retval = 0;
00021 char buf[10];
00022
00023
00024 #ifdef MB_CAPABLE
00025 if (ps == NULL)
00026 {
00027 _REENT_CHECK_MISC(ptr);
00028 ps = &(_REENT_WCRTOMB_STATE(ptr));
00029 }
00030 #endif
00031
00032 if (s == NULL)
00033 retval = _wctomb_r (ptr, buf, L'\0', ps);
00034 else
00035 retval = _wctomb_r (ptr, s, wc, ps);
00036
00037 if (retval == -1)
00038 {
00039 ps->__count = 0;
00040 ptr->_errno = EILSEQ;
00041 return (size_t)(-1);
00042 }
00043 else
00044 return (size_t)retval;
00045 #endif
00046 int retval = 1 ;
00047 return (size_t)retval;
00048 }
00049
00050 #ifndef _REENT_ONLY
00051 size_t
00052 _DEFUN (wcrtomb, (s, wc, ps),
00053 char *s _AND
00054 wchar_t wc _AND
00055 mbstate_t *ps)
00056 {
00057 return _wcrtomb_r (_REENT, s, wc, ps);
00058 }
00059 #endif