mirror of
https://github.com/reactos/reactos.git
synced 2024-11-20 06:15:26 +00:00
37 lines
761 B
C
37 lines
761 B
C
|
/*
|
||
|
* COPYRIGHT: See COPYING in the top level directory
|
||
|
* PROJECT: ReactOS CRT
|
||
|
* PURPOSE: Implementation of _mbsnlen
|
||
|
* FILE: lib/sdk/crt/string/_mbsnlen.c
|
||
|
* PROGRAMMER: Timo Kreuzer
|
||
|
*/
|
||
|
|
||
|
#include <mbstring.h>
|
||
|
|
||
|
_Check_return_
|
||
|
_CRTIMP
|
||
|
size_t
|
||
|
__cdecl
|
||
|
_mbsnlen(
|
||
|
_In_z_ const unsigned char *pmbstr,
|
||
|
_In_ size_t cjMaxLen)
|
||
|
{
|
||
|
size_t cchCount = 0;
|
||
|
unsigned char jMbsByte;
|
||
|
|
||
|
/* Loop while we have bytes to process */
|
||
|
while (cjMaxLen-- > 0)
|
||
|
{
|
||
|
/* Get next mb byte */
|
||
|
jMbsByte = *pmbstr++;
|
||
|
|
||
|
/* If this is 0, we're done */
|
||
|
if (jMbsByte == 0) break;
|
||
|
|
||
|
/* Don't count lead bytes */
|
||
|
if (!_ismbblead(jMbsByte)) cchCount++;
|
||
|
}
|
||
|
|
||
|
return cchCount;
|
||
|
}
|