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

Alexandre Julliard julliard at winehq.org
Tue Apr 12 15:35:15 CDT 2022


Module: wine
Branch: master
Commit: 6eae7a24e2f91b348b854b2d6e6c62ef4cc471e7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6eae7a24e2f91b348b854b2d6e6c62ef4cc471e7

Author: Alexandre Julliard <julliard at 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 at 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)
  */




More information about the wine-cvs mailing list