Module: wine Branch: master Commit: a57d67b9bc1ae6ac8e7cc634e8025bcc23f95e58 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a57d67b9bc1ae6ac8e7cc634e...
Author: Piotr Caban piotr@codeweavers.com Date: Mon Sep 30 19:09:09 2019 +0200
msvcrt: Add wcrtomb_s implementation.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
.../api-ms-win-crt-convert-l1-1-0.spec | 2 +- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrt/wcs.c | 14 ++++++++++++++ dlls/ucrtbase/ucrtbase.spec | 2 +- 10 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec b/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec index f5b77d6a99..c0e287321a 100644 --- a/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec +++ b/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec @@ -102,7 +102,7 @@ @ cdecl -ret64 strtoull(str ptr long) ucrtbase.strtoull @ cdecl -ret64 strtoumax(str ptr long) ucrtbase.strtoumax @ cdecl wcrtomb(ptr long ptr) ucrtbase.wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) ucrtbase.wcrtomb_s @ cdecl wcsrtombs(ptr ptr long ptr) ucrtbase.wcsrtombs @ cdecl wcsrtombs_s(ptr ptr long ptr long ptr) ucrtbase.wcsrtombs_s @ cdecl wcstod(wstr ptr) ucrtbase.wcstod diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index cf4d6d4cd2..895298478d 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1853,7 +1853,7 @@ @ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf @ cdecl vwprintf_s(wstr ptr) MSVCRT_vwprintf_s @ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) MSVCRT_wcrtomb_s @ cdecl wcscat(wstr wstr) ntdll.wcscat @ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s @ cdecl wcschr(wstr long) MSVCRT_wcschr diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 410aae4476..66c6f65a9b 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -2211,7 +2211,7 @@ @ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf @ cdecl vwprintf_s(wstr ptr) MSVCRT_vwprintf_s @ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) MSVCRT_wcrtomb_s @ cdecl wcscat(wstr wstr) ntdll.wcscat @ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s @ cdecl wcschr(wstr long) MSVCRT_wcschr diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 171cfd27e1..8c9d93fd81 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -2446,7 +2446,7 @@ @ stub vwscanf @ stub vwscanf_s @ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) MSVCRT_wcrtomb_s @ cdecl wcscat(wstr wstr) ntdll.wcscat @ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s @ cdecl wcschr(wstr long) MSVCRT_wcschr diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index f9e3a0087f..ba1b351e89 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -2108,7 +2108,7 @@ @ stub vwscanf @ stub vwscanf_s @ cdecl wcrtomb(ptr long ptr) msvcr120.wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) msvcr120.wcrtomb_s @ cdecl wcscat(wstr wstr) msvcr120.wcscat @ cdecl wcscat_s(wstr long wstr) msvcr120.wcscat_s @ cdecl wcschr(wstr long) msvcr120.wcschr diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 3fc18d2c8d..f8d0920c3c 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1533,7 +1533,7 @@ @ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf @ cdecl vwprintf_s(wstr ptr) MSVCRT_vwprintf_s @ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) MSVCRT_wcrtomb_s @ cdecl wcscat(wstr wstr) ntdll.wcscat @ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s @ cdecl wcschr(wstr long) MSVCRT_wcschr diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 4050f42382..d2f469a77d 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1506,7 +1506,7 @@ @ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf @ cdecl vwprintf_s(wstr ptr) MSVCRT_vwprintf_s @ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) MSVCRT_wcrtomb_s @ cdecl wcscat(wstr wstr) ntdll.wcscat @ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s @ cdecl wcschr(wstr long) MSVCRT_wcschr diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index e6f0841f7f..9f2a70c2f9 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1480,7 +1480,7 @@ @ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf @ cdecl vwprintf_s(wstr ptr) MSVCRT_vwprintf_s @ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb -# stub wcrtomb_s(ptr ptr long long ptr) +@ cdecl wcrtomb_s(ptr ptr long long ptr) MSVCRT_wcrtomb_s @ cdecl wcscat(wstr wstr) ntdll.wcscat @ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s @ cdecl wcschr(wstr long) MSVCRT_wcschr diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index 6b8c7bbe0f..f84963ce2e 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -1821,6 +1821,20 @@ INT CDECL MSVCRT_wctob( MSVCRT_wint_t wchar ) return MSVCRT_EOF; }
+/********************************************************************* + * wcrtomb_s (MSVCRT.@) + */ +INT CDECL MSVCRT_wcrtomb_s(MSVCRT_size_t *len, char *mbchar, + MSVCRT_size_t size, MSVCRT_wchar_t wch, MSVCRT_mbstate_t *s) +{ + int ilen, ret; + + if (s) *s = 0; + ret = MSVCRT_wctomb_s(&ilen, mbchar, size, wch); + if (len) *len = ilen; + return ret; +} + /********************************************************************* * wcrtomb (MSVCRT.@) */ diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 6b7a140b19..3b590ee266 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -2553,7 +2553,7 @@ @ cdecl ungetc(long ptr) MSVCRT_ungetc @ cdecl ungetwc(long ptr) MSVCRT_ungetwc @ cdecl wcrtomb(ptr long ptr) MSVCRT_wcrtomb -@ stub wcrtomb_s +@ cdecl wcrtomb_s(ptr ptr long long ptr) MSVCRT_wcrtomb_s @ cdecl wcscat(wstr wstr) ntdll.wcscat @ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s @ cdecl wcschr(wstr long) MSVCRT_wcschr