From d54f28a85065840a5dbdac330ed7ff0beb0fe499 Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Fri, 17 Jun 2016 14:21:42 -0700 Subject: [PATCH] msvcrt: Add _wcreate_locale Signed-off-by: Daniel Lehman --- .../api-ms-win-crt-locale-l1-1-0.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcrt/locale.c | 19 +++++++++++++++++++ dlls/ucrtbase/ucrtbase.spec | 2 +- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/dlls/api-ms-win-crt-locale-l1-1-0/api-ms-win-crt-locale-l1-1-0.spec b/dlls/api-ms-win-crt-locale-l1-1-0/api-ms-win-crt-locale-l1-1-0.spec index c7e5aae..60c588b 100644 --- a/dlls/api-ms-win-crt-locale-l1-1-0/api-ms-win-crt-locale-l1-1-0.spec +++ b/dlls/api-ms-win-crt-locale-l1-1-0/api-ms-win-crt-locale-l1-1-0.spec @@ -14,7 +14,7 @@ @ cdecl _lock_locales() ucrtbase._lock_locales @ cdecl _setmbcp(long) ucrtbase._setmbcp @ cdecl _unlock_locales() ucrtbase._unlock_locales -@ stub _wcreate_locale +@ cdecl _wcreate_locale(long wstr) ucrtbase._wcreate_locale @ cdecl _wsetlocale(long wstr) ucrtbase._wsetlocale @ cdecl localeconv() ucrtbase.localeconv @ cdecl setlocale(long str) ucrtbase.setlocale diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 5f33acf..1890a13 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1844,7 +1844,7 @@ @ cdecl _wchmod(wstr long) MSVCRT__wchmod @ extern _wcmdln MSVCRT__wcmdln @ cdecl _wcreat(wstr long) MSVCRT__wcreat -@ stub _wcreate_locale +@ cdecl _wcreate_locale(long wstr) MSVCRT__wcreate_locale @ cdecl _wcscoll_l(wstr wstr ptr) MSVCRT__wcscoll_l @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 953cdba..66334d8 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1862,7 +1862,7 @@ @ cdecl _wchmod(wstr long) MSVCRT__wchmod @ extern _wcmdln MSVCRT__wcmdln @ cdecl _wcreat(wstr long) MSVCRT__wcreat -@ stub _wcreate_locale +@ cdecl _wcreate_locale(long wstr) MSVCRT__wcreate_locale @ cdecl _wcscoll_l(wstr wstr ptr) MSVCRT__wcscoll_l @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index c88cde0..6f0daca 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1555,7 +1555,7 @@ @ cdecl _wchmod(wstr long) msvcr120._wchmod @ extern _wcmdln msvcr120._wcmdln @ cdecl _wcreat(wstr long) msvcr120._wcreat -@ stub _wcreate_locale +@ cdecl _wcreate_locale(long wstr) msvcr120._wcreate_locale @ cdecl _wcscoll_l(wstr wstr ptr) msvcr120._wcscoll_l @ cdecl _wcsdup(wstr) msvcr120._wcsdup @ cdecl _wcserror(long) msvcr120._wcserror diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 024ec99..943fcf3 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -1634,6 +1634,25 @@ MSVCRT__locale_t CDECL MSVCRT__create_locale(int category, const char *locale) } /********************************************************************* + * _wcreate_locale (MSVCRT.@) + */ +MSVCRT__locale_t CDECL MSVCRT__wcreate_locale(int category, const MSVCRT_wchar_t *locale) +{ + MSVCRT__locale_t loc; + MSVCRT_size_t len; + char *str; + + len = MSVCRT_wcstombs(NULL, locale, 0); + if (!(str = MSVCRT_malloc(len))) return NULL; + MSVCRT_wcstombs(str, locale, len); + + loc = MSVCRT__create_locale(category, str); + + MSVCRT_free(str); + return loc; +} + +/********************************************************************* * setlocale (MSVCRT.@) */ char* CDECL MSVCRT_setlocale(int category, const char* locale) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 1adc80a..0e1faa1 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -2011,7 +2011,7 @@ @ cdecl _wchdir(wstr) MSVCRT__wchdir @ cdecl _wchmod(wstr long) MSVCRT__wchmod @ cdecl _wcreat(wstr long) MSVCRT__wcreat -@ stub _wcreate_locale +@ cdecl _wcreate_locale(long wstr) MSVCRT__wcreate_locale @ cdecl _wcscoll_l(wstr wstr ptr) MSVCRT__wcscoll_l @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror -- 1.9.5