90 lines
2.0 KiB
C
90 lines
2.0 KiB
C
/*
|
|
* CRTDLL multi-byte string functions
|
|
*
|
|
* Copyright 1999 Alexandre Julliard
|
|
*/
|
|
|
|
#include "crtdll.h"
|
|
|
|
|
|
DEFAULT_DEBUG_CHANNEL(crtdll);
|
|
|
|
|
|
/*********************************************************************
|
|
* _mbsicmp (CRTDLL.204)
|
|
*/
|
|
int __cdecl CRTDLL__mbsicmp(unsigned char *x,unsigned char *y)
|
|
{
|
|
do {
|
|
if (!*x)
|
|
return !!*y;
|
|
if (!*y)
|
|
return !!*x;
|
|
/* FIXME: MBCS handling... */
|
|
if (*x!=*y)
|
|
return 1;
|
|
x++;
|
|
y++;
|
|
} while (1);
|
|
}
|
|
|
|
|
|
/*********************************************************************
|
|
* 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;
|
|
}
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
* _mbsrchr (CRTDLL.223)
|
|
*/
|
|
LPSTR __cdecl CRTDLL__mbsrchr(LPSTR s,CHAR x)
|
|
{
|
|
/* FIXME: handle multibyte strings */
|
|
return strrchr(s,x);
|
|
}
|
|
|
|
|
|
/*********************************************************************
|
|
* 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;
|
|
}
|
|
|
|
|
|
/*********************************************************************
|
|
* _mbccpy (CRTDLL.??)
|
|
*
|
|
* Copy one multibyte character to another
|
|
*/
|
|
VOID __cdecl CRTDLL__mbccpy(LPSTR dest, LPSTR src)
|
|
{
|
|
FIXME("MBCS copy treated as ASCII\n");
|
|
*dest = *src;
|
|
}
|
|
|