Module: wine Branch: master Commit: 6eae7a24e2f91b348b854b2d6e6c62ef4cc471e7 URL: https://source.winehq.org/git/wine.git/?a=commit;h=6eae7a24e2f91b348b854b2d6...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Apr 12 10:09:45 2022 +0200
ntdll: Export a few more codepage functions from ntdll.so.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/unix/env.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+)
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c index 47bc0118802..89297472a34 100644 --- a/dlls/ntdll/unix/env.c +++ b/dlls/ntdll/unix/env.c @@ -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) */