#include <newlib.h> #include <stdlib.h> #include <wchar.h> int _DEFUN (mblen, (s, n), const char *s _AND size_t n) { #ifdef _MB_CAPABLE int retval = 0; mbstate_t *state; _REENT_CHECK_MISC(_REENT); state = &(_REENT_MBLEN_STATE(_REENT)); retval = _mbtowc_r (_REENT, NULL, s, n, state); if (retval < 0) { state->__count = 0; return -1; } else return retval; #else /* not _MB_CAPABLE */ if (s == NULL || *s == '\0') return 0; if (n == 0) return -1; return 1;
#include <stdlib.h> #include <wchar.h> #include "local.h" int _DEFUN (mblen, (s, n), const char *s _AND size_t n) { #ifdef _MB_CAPABLE int retval = 0; struct _reent *reent = _REENT; mbstate_t *state; _REENT_CHECK_MISC(reent); state = &(_REENT_MBLEN_STATE(reent)); retval = __MBTOWC (reent, NULL, s, n, state); if (retval < 0) { state->__count = 0; return -1; } else return retval; #else /* not _MB_CAPABLE */ if (s == NULL || *s == '\0') return 0; if (n == 0) return -1; return 1;