/* * CRTDLL multi-byte string functions * * Copyright 1999 Alexandre Julliard */ #include "windef.h" #include "winbase.h" #include "winnls.h" #include "crtdll.h" /********************************************************************* * CRTDLL__mbsinc (CRTDLL.205) */ LPSTR __cdecl CRTDLL__mbsinc( LPCSTR str ) { if (IsDBCSLeadByte( *str )) str++; return (LPSTR)(str + 1); } /********************************************************************* * CRTDLL__mbslen (CRTDLL.206) */ INT __cdecl CRTDLL__mbslen( LPCSTR str ) { INT len; for (len = 0; *str; len++, str++) if (IsDBCSLeadByte(str[0]) && str[1]) str++; return len; } /********************************************************************* * CRTDLL_mbtowc (CRTDLL.430) */ INT __cdecl CRTDLL_mbtowc( WCHAR *dst, LPCSTR str, INT n ) { if (n <= 0) return 0; if (!str) return 0; if (!MultiByteToWideChar( CP_ACP, 0, str, n, dst, 1 )) return 0; /* return the number of bytes from src that have been used */ if (!*str) return 0; if (n >= 2 && IsDBCSLeadByte(*str) && str[1]) return 2; return 1; }