ntdll: Export a few more codepage functions from ntdll.so.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2022-04-12 10:09:45 +02:00
parent b47379c1f8
commit 6eae7a24e2

View file

@ -2252,6 +2252,39 @@ WCHAR WINAPI RtlDowncaseUnicodeChar( WCHAR wch )
return ntdll_towlower( wch );
}
/******************************************************************
* RtlInitCodePageTable (ntdll.so)
*/
void WINAPI RtlInitCodePageTable( USHORT *ptr, CPTABLEINFO *info )
{
static const CPTABLEINFO utf8_cpinfo = { CP_UTF8, 4, '?', 0xfffd, '?', '?' };
if (ptr[1] == CP_UTF8) *info = utf8_cpinfo;
else init_codepage_table( ptr, info );
}
/**************************************************************************
* RtlCustomCPToUnicodeN (ntdll.so)
*/
NTSTATUS WINAPI RtlCustomCPToUnicodeN( CPTABLEINFO *info, WCHAR *dst, DWORD dstlen, DWORD *reslen,
const char *src, DWORD srclen )
{
unsigned int ret = cp_mbstowcs( info, dst, dstlen / sizeof(WCHAR), src, srclen );
if (reslen) *reslen = ret * sizeof(WCHAR);
return STATUS_SUCCESS;
}
/**************************************************************************
* RtlUnicodeToCustomCPN (ntdll.so)
*/
NTSTATUS WINAPI RtlUnicodeToCustomCPN( CPTABLEINFO *info, char *dst, DWORD dstlen, DWORD *reslen,
const WCHAR *src, DWORD srclen )
{
unsigned int ret = cp_wcstombs( info, dst, dstlen, src, srclen / sizeof(WCHAR) );
if (reslen) *reslen = ret;
return STATUS_SUCCESS;
}
/**********************************************************************
* RtlUTF8ToUnicodeN (ntdll.so)
*/
@ -2269,6 +2302,23 @@ NTSTATUS WINAPI RtlUTF8ToUnicodeN( WCHAR *dst, DWORD dstlen, DWORD *reslen, cons
return status;
}
/**************************************************************************
* RtlUnicodeToUTF8N (ntdll.so)
*/
NTSTATUS WINAPI RtlUnicodeToUTF8N( char *dst, DWORD dstlen, DWORD *reslen, const WCHAR *src, DWORD srclen )
{
unsigned int ret;
NTSTATUS status;
if (!dst)
status = utf8_wcstombs_size( src, srclen / sizeof(WCHAR), &ret );
else
status = utf8_wcstombs( dst, dstlen, &ret, src, srclen / sizeof(WCHAR) );
*reslen = ret;
return status;
}
/**********************************************************************
* RtlNtStatusToDosError (ntdll.so)
*/