Piotr Caban : msvcrt: Added wcrtomb implementation.
Alexandre Julliard
julliard at winehq.org
Fri Nov 30 13:48:20 CST 2012
Module: wine
Branch: master
Commit: c0ce611ebd3684dcc59fb4803dbd0fa2af87bf73
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c0ce611ebd3684dcc59fb4803dbd0fa2af87bf73
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu Nov 29 21:49:42 2012 +0000
msvcrt: Added wcrtomb implementation.
---
dlls/msvcrt/msvcrt.spec | 2 +-
dlls/msvcrt/wcs.c | 20 +++++++++++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 6a88832..ecf44fd 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1445,7 +1445,7 @@
@ cdecl vswprintf_s(ptr long wstr ptr) MSVCRT_vswprintf_s
@ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf
@ cdecl vwprintf_s(wstr ptr) MSVCRT_vwprintf_s
-# stub wcrtomb(ptr long ptr)
+@ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb
# stub wcrtomb_s(ptr ptr long long ptr)
@ cdecl wcscat(wstr wstr) ntdll.wcscat
@ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 08628d4..555e63a 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -1083,7 +1083,25 @@ INT CDECL MSVCRT_wctob( MSVCRT_wint_t wchar )
*/
INT CDECL MSVCRT_wctomb( char *dst, MSVCRT_wchar_t ch )
{
- return WideCharToMultiByte( get_locinfo()->lc_codepage, 0, &ch, 1, dst, 6, NULL, NULL );
+ BOOL error;
+ INT size;
+
+ size = WideCharToMultiByte(get_locinfo()->lc_codepage, 0, &ch, 1, dst, dst ? 6 : 0, NULL, &error);
+ if(!size || error) {
+ *MSVCRT__errno() = MSVCRT_EINVAL;
+ return MSVCRT_EOF;
+ }
+ return size;
+}
+
+/*********************************************************************
+ * wcrtomb (MSVCRT.@)
+ */
+MSVCRT_size_t CDECL MSVCRT_wcrtomb( char *dst, MSVCRT_wchar_t ch, MSVCRT_mbstate_t *s)
+{
+ if(s)
+ *s = 0;
+ return MSVCRT_wctomb(dst, ch);
}
/*********************************************************************
More information about the wine-cvs
mailing list