2008-12-18 21:17:22 +00:00
|
|
|
/*
|
|
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
|
|
* PROJECT: ReactOS system libraries
|
|
|
|
* FILE: lib/sdk/crt/mbstring/mbclen.c
|
|
|
|
* PURPOSE: Determines the length of a multi byte character
|
|
|
|
* PROGRAMERS:
|
|
|
|
* Copyright 1999 Alexandre Julliard
|
|
|
|
* Copyright 2000 Jon Griffths
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2007-03-14 20:24:57 +00:00
|
|
|
#include <mbstring.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
2008-12-18 21:17:22 +00:00
|
|
|
int isleadbyte(int byte);
|
2007-03-14 20:24:57 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @implemented
|
|
|
|
*/
|
|
|
|
size_t _mbclen(const unsigned char *s)
|
|
|
|
{
|
2008-12-18 21:17:22 +00:00
|
|
|
return _ismbblead(*s) ? 2 : 1;
|
2007-03-14 20:24:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
size_t _mbclen2(const unsigned int s)
|
|
|
|
{
|
2008-12-18 21:17:22 +00:00
|
|
|
return (_ismbblead(s>>8) && _ismbbtrail(s&0x00FF)) ? 2 : 1;
|
2007-03-14 20:24:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* assume MB_CUR_MAX == 2
|
|
|
|
*
|
|
|
|
* @implemented
|
|
|
|
*/
|
2008-12-18 21:17:22 +00:00
|
|
|
int mblen( const char *str, size_t size )
|
2007-03-14 20:24:57 +00:00
|
|
|
{
|
2008-12-18 21:17:22 +00:00
|
|
|
if (str && *str && size)
|
|
|
|
{
|
|
|
|
return !isleadbyte(*str) ? 1 : (size>1 ? 2 : -1);
|
|
|
|
}
|
|
|
|
return 0;
|
2007-03-14 20:24:57 +00:00
|
|
|
}
|