Module: wine Branch: master Commit: 679542419abb285afc615b5286fbbd25082d5c64 URL: http://source.winehq.org/git/wine.git/?a=commit;h=679542419abb285afc615b5286...
Author: Piotr Caban piotr@codeweavers.com Date: Sun Jul 28 09:43:59 2013 +0200
msvcrt: Add _wcstol_l implementation.
---
dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrt/wcs.c | 18 ++++++++++++++++++ 6 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index c71f7fa..9d4cc80 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1505,7 +1505,7 @@ @ cdecl _wcstod_l(wstr ptr) msvcrt._wcstod_l @ cdecl -ret64 _wcstoi64(wstr ptr long) msvcrt._wcstoi64 @ cdecl -ret64 _wcstoi64_l(wstr ptr long ptr) msvcrt._wcstoi64_l -@ stub _wcstol_l +@ cdecl _wcstol_l(wstr ptr long ptr) msvcrt._wcstol_l @ cdecl _wcstombs_l(ptr ptr long ptr) msvcrt._wcstombs_l @ cdecl _wcstombs_s_l(ptr ptr long wstr long ptr) msvcrt._wcstombs_s_l @ cdecl -ret64 _wcstoui64(wstr ptr long) msvcrt._wcstoui64 diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 40dd029..6e97edb 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1868,7 +1868,7 @@ @ cdecl _wcstod_l(wstr ptr) msvcrt._wcstod_l @ cdecl -ret64 _wcstoi64(wstr ptr long) msvcrt._wcstoi64 @ cdecl -ret64 _wcstoi64_l(wstr ptr long ptr) msvcrt._wcstoi64_l -@ stub _wcstol_l +@ cdecl _wcstol_l(wstr ptr long ptr) msvcrt._wcstol_l @ cdecl _wcstombs_l(ptr ptr long ptr) msvcrt._wcstombs_l @ cdecl _wcstombs_s_l(ptr ptr long wstr long ptr) msvcrt._wcstombs_s_l @ cdecl -ret64 _wcstoui64(wstr ptr long) msvcrt._wcstoui64 diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 68530bf..8d91d66 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1183,7 +1183,7 @@ @ cdecl _wcstod_l(wstr ptr) msvcrt._wcstod_l @ cdecl -ret64 _wcstoi64(wstr ptr long) msvcrt._wcstoi64 @ cdecl -ret64 _wcstoi64_l(wstr ptr long ptr) msvcrt._wcstoi64_l -@ stub _wcstol_l +@ cdecl _wcstol_l(wstr ptr long ptr) msvcrt._wcstol_l @ cdecl _wcstombs_l(ptr ptr long ptr) msvcrt._wcstombs_l @ cdecl _wcstombs_s_l(ptr ptr long wstr long ptr) msvcrt._wcstombs_s_l @ cdecl -ret64 _wcstoui64(wstr ptr long) msvcrt._wcstoui64 diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 6a1657f..9469587 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1159,7 +1159,7 @@ @ cdecl _wcstod_l(wstr ptr) msvcrt._wcstod_l @ cdecl -ret64 _wcstoi64(wstr ptr long) msvcrt._wcstoi64 @ cdecl -ret64 _wcstoi64_l(wstr ptr long ptr) msvcrt._wcstoi64_l -@ stub _wcstol_l +@ cdecl _wcstol_l(wstr ptr long ptr) msvcrt._wcstol_l @ cdecl _wcstombs_l(ptr ptr long ptr) msvcrt._wcstombs_l @ cdecl _wcstombs_s_l(ptr ptr long wstr long ptr) msvcrt._wcstombs_s_l @ cdecl -ret64 _wcstoui64(wstr ptr long) msvcrt._wcstoui64 diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 6a812a9..975afe0 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1123,7 +1123,7 @@ @ cdecl _wcstod_l(wstr ptr) MSVCRT__wcstod_l @ cdecl -ret64 _wcstoi64(wstr ptr long) MSVCRT__wcstoi64 @ cdecl -ret64 _wcstoi64_l(wstr ptr long ptr) MSVCRT__wcstoi64_l -# stub _wcstol_l(wstr ptr long ptr) +@ cdecl _wcstol_l(wstr ptr long ptr) MSVCRT__wcstol_l @ cdecl _wcstombs_l(ptr ptr long ptr) MSVCRT__wcstombs_l @ cdecl _wcstombs_s_l(ptr ptr long wstr long ptr) MSVCRT__wcstombs_s_l @ cdecl -ret64 _wcstoui64(wstr ptr long) MSVCRT__wcstoui64 diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index dbb12dd..3df7c02 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -1613,6 +1613,24 @@ __int64 CDECL MSVCRT__wcstoi64(const MSVCRT_wchar_t *nptr, }
/********************************************************************* + * _wcstol_l (MSVCRT.@) + */ +MSVCRT_long CDECL MSVCRT__wcstol_l(const MSVCRT_wchar_t *s, + MSVCRT_wchar_t **end, int base, MSVCRT__locale_t locale) +{ + __int64 ret = MSVCRT__wcstoi64_l(s, end, base, locale); + + if(ret > MSVCRT_LONG_MAX) { + ret = MSVCRT_LONG_MAX; + *MSVCRT__errno() = MSVCRT_ERANGE; + }else if(ret < MSVCRT_LONG_MIN) { + ret = MSVCRT_LONG_MIN; + *MSVCRT__errno() = MSVCRT_ERANGE; + } + return ret; +} + +/********************************************************************* * _wtoi_l (MSVCRT.@) */ int __cdecl MSVCRT__wtoi_l(const MSVCRT_wchar_t *str, MSVCRT__locale_t locale)