2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/sdk/crt/mbstring/mbclen.c
5 * PURPOSE: Determines the length of a multi byte character
7 * Copyright 1999 Alexandre Julliard
8 * Copyright 2000 Jon Griffths
18 size_t _mbclen(const unsigned char *s
)
20 return _ismbblead(*s
) ? 2 : 1;
23 size_t _mbclen2(const unsigned int s
)
25 return (_ismbblead(s
>>8) && _ismbbtrail(s
&0x00FF)) ? 2 : 1;
29 * assume MB_CUR_MAX == 2
33 int mblen( const char *str
, size_t size
)
35 if (str
&& *str
&& size
)
37 return !isleadbyte((unsigned char)*str
) ? 1 : (size
>1 ? 2 : -1);
42 size_t __cdecl
mbrlen(const char *str
, size_t len
, mbstate_t *state
)
44 mbstate_t s
= (state
? *state
: 0);
47 if(!len
|| !str
|| !*str
)
50 if(get_locinfo()->mb_cur_max
== 1) {
52 }else if(!s
&& isleadbyte((unsigned char)*str
)) {
54 s
= (unsigned char)*str
;