2025-04-27 07:49:33 -04:00

82 lines
1.6 KiB
C

//============================================================================
//
// DBCS and UNICODE aware string routines
//
//
//============================================================================
#include "pch.hxx" // not really a pch in this case, just a header
#include "wstrings.h"
#pragma warning (disable: 4706) // assignment within conditional expression
OESTDAPI_(BOOL) UnlocStrEqNW(LPCWSTR pwsz1, LPCWSTR pwsz2, DWORD cch)
{
if (!pwsz1 || !pwsz2)
{
if (!pwsz1 && !pwsz2)
return TRUE;
return FALSE;
}
while (cch && *pwsz1 && *pwsz2 && (*pwsz1 == *pwsz2))
{
pwsz1++;
pwsz2++;
cch--;
}
return !cch;
}
LPWSTR WS_StrnCpyW(LPWSTR psz1, LPCWSTR psz2, int cchBound)
{
WCHAR *const pszRet = psz1;
Assert(psz1);
Assert(psz2);
if (0 < cchBound)
{
// pre-dec b/c we add a null last
while (0 < --cchBound)
{
if (!(*psz1++ = *psz2++))
// reached null
break;
}
if (0 == cchBound)
*psz1 = '\0';
}
return pszRet;
}
LPWSTR WS_StrCpyW(LPWSTR psz1, LPCWSTR psz2)
{
register WCHAR *const psz = psz1;
Assert(psz1);
Assert(psz2);
while (*psz1++ = *psz2++)
;
return psz;
}
LPWSTR WS_StrCatW(LPWSTR psz1, LPCWSTR psz2)
{
register WCHAR *const psz = psz1;
Assert(psz1);
Assert(psz2);
while (0 != *psz1)
psz1++;
while (*psz1++ = *psz2++)
;
return psz;
}