[PATCH] msvcr120: Implement atoll, _atoll_l, _wtoll, _wtoll_l.
Rafał Harabień
rafalh1992 at o2.pl
Tue Feb 9 07:29:07 CST 2016
Fixes Multi Theft Auto: San Andreas 1.5.2 not starting in Wine.
Signed-off-by: Rafał Harabień <rafalh1992 at o2.pl>
---
.../api-ms-win-crt-convert-l1-1-0.spec | 8 ++++----
dlls/msvcr120/msvcr120.spec | 8 ++++----
dlls/msvcr120_app/msvcr120_app.spec | 8 ++++----
dlls/msvcrt/string.c | 16 ++++++++++++++++
dlls/msvcrt/wcs.c | 16 ++++++++++++++++
dlls/ucrtbase/ucrtbase.spec | 8 ++++----
6 files changed, 48 insertions(+), 16 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 319bff5..6ac93d3 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
@@ -10,7 +10,7 @@
@ stub _atol_l
@ cdecl _atoldbl(ptr str) ucrtbase._atoldbl
@ stub _atoldbl_l
-@ stub _atoll_l
+@ cdecl -ret64 _atoll_l(str ptr) ucrtbase._atoll_l
@ cdecl _ecvt(double long ptr ptr) ucrtbase._ecvt
@ cdecl _ecvt_s(str long double long ptr ptr) ucrtbase._ecvt_s
@ cdecl _fcvt(double long ptr ptr) ucrtbase._fcvt
@@ -75,12 +75,12 @@
@ cdecl _wtoi_l(wstr ptr) ucrtbase._wtoi_l
@ cdecl _wtol(wstr) ucrtbase._wtol
@ cdecl _wtol_l(wstr ptr) ucrtbase._wtol_l
-@ stub _wtoll
-@ stub _wtoll_l
+@ cdecl -ret64 _wtoll(wstr) ucrtbase._wtoll
+@ cdecl -ret64 _wtoll_l(wstr ptr) ucrtbase._wtoll_l
@ cdecl atof(str) ucrtbase.atof
@ cdecl atoi(str) ucrtbase.atoi
@ cdecl atol(str) ucrtbase.atol
-@ stub atoll
+@ cdecl -ret64 atoll(str) ucrtbase.atoll
@ cdecl btowc(long) ucrtbase.btowc
@ stub c16rtomb
@ stub c32rtomb
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 9931820..5f6533c 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -1040,7 +1040,7 @@
@ stub _atol_l
@ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
@ stub _atoldbl_l
-@ stub _atoll_l
+@ cdecl -ret64 _atoll_l(str ptr) MSVCRT__atoll_l
@ cdecl _beep(long long) MSVCRT__beep
@ cdecl _beginthread(ptr long ptr)
@ cdecl _beginthreadex(ptr long ptr ptr long ptr)
@@ -1999,8 +1999,8 @@
@ cdecl _wtoi_l(wstr ptr) MSVCRT__wtoi_l
@ cdecl _wtol(wstr) MSVCRT__wtol
@ cdecl _wtol_l(wstr ptr) MSVCRT__wtol_l
-@ stub _wtoll
-@ stub _wtoll_l
+@ cdecl -ret64 _wtoll(wstr) MSVCRT__wtoll
+@ cdecl -ret64 _wtoll_l(wstr ptr) MSVCRT__wtoll_l
@ cdecl _wunlink(wstr) MSVCRT__wunlink
@ cdecl _wutime32(wstr ptr)
@ cdecl _wutime64(wstr ptr)
@@ -2032,7 +2032,7 @@
@ cdecl atof(str) MSVCRT_atof
@ cdecl atoi(str) MSVCRT_atoi
@ cdecl atol(str) ntdll.atol
-@ stub atoll
+@ cdecl -ret64 atoll(str) MSVCRT_atoll
@ cdecl bsearch(ptr ptr long long ptr) MSVCRT_bsearch
@ cdecl bsearch_s(ptr ptr long long ptr ptr) MSVCRT_bsearch_s
@ cdecl btowc(long) MSVCRT_btowc
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index 50066ed..f938eff 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -1011,7 +1011,7 @@
@ stub _atol_l
@ cdecl _atoldbl(ptr str) msvcr120._atoldbl
@ stub _atoldbl_l
-@ stub _atoll_l
+@ cdecl -ret64 _atoll_l(str ptr) msvcr120._atoll_l
@ cdecl _byteswap_uint64(int64) msvcr120._byteswap_uint64
@ cdecl _byteswap_ulong(long) msvcr120._byteswap_ulong
@ cdecl _byteswap_ushort(long) msvcr120._byteswap_ushort
@@ -1665,8 +1665,8 @@
@ cdecl _wtoi_l(wstr ptr) msvcr120._wtoi_l
@ cdecl _wtol(wstr) msvcr120._wtol
@ cdecl _wtol_l(wstr ptr) msvcr120._wtol_l
-@ stub _wtoll
-@ stub _wtoll_l
+@ cdecl -ret64 _wtoll(wstr) msvcr120._wtoll
+@ cdecl -ret64 _wtoll_l(wstr ptr) msvcr120._wtoll_l
@ cdecl _wunlink(wstr) msvcr120._wunlink
@ cdecl _wutime32(wstr ptr) msvcr120._wutime32
@ cdecl _wutime64(wstr ptr) msvcr120._wutime64
@@ -1698,7 +1698,7 @@
@ cdecl atof(str) msvcr120.atof
@ cdecl atoi(str) msvcr120.atoi
@ cdecl atol(str) msvcr120.atol
-@ stub atoll
+@ cdecl -ret64 atoll(str) msvcr120.atoll
@ cdecl bsearch(ptr ptr long long ptr) msvcr120.bsearch
@ cdecl bsearch_s(ptr ptr long long ptr ptr) msvcr120.bsearch_s
@ cdecl btowc(long) msvcr120.btowc
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index f44ac52..59da5bd 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -1018,6 +1018,22 @@ int CDECL MSVCRT_atoi(const char *str)
#endif
/******************************************************************
+ * _atoll_l (MSVCR120.@)
+ */
+MSVCRT_longlong CDECL MSVCRT__atoll_l(const char* str, MSVCRT__locale_t locale)
+{
+ return MSVCRT_strtoi64_l(str, NULL, 10, locale);
+}
+
+/******************************************************************
+ * atoll (MSVCR120.@)
+ */
+MSVCRT_longlong CDECL MSVCRT_atoll(const char* str)
+{
+ return MSVCRT__atoll_l(str, NULL);
+}
+
+/******************************************************************
* _strtol_l (MSVCRT.@)
*/
MSVCRT_long CDECL MSVCRT__strtol_l(const char* nptr,
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 56625e9..b6946a3 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -2083,6 +2083,22 @@ MSVCRT_long __cdecl MSVCRT__wtol(const MSVCRT_wchar_t *str)
}
/*********************************************************************
+ * _wtoll_l (MSVCR120.@)
+ */
+MSVCRT_longlong __cdecl MSVCRT__wtoll_l(const MSVCRT_wchar_t *str, MSVCRT__locale_t locale)
+{
+ return MSVCRT__wcstoi64_l(str, NULL, 10, locale);
+}
+
+/*********************************************************************
+ * _wtoll (MSVCR120.@)
+ */
+MSVCRT_longlong __cdecl MSVCRT__wtoll(const MSVCRT_wchar_t *str)
+{
+ return MSVCRT__wtoll_l(str, NULL);
+}
+
+/*********************************************************************
* _wcstoui64_l (MSVCRT.@)
*
* FIXME: locale parameter is ignored
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index e809596..801cb99 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -201,7 +201,7 @@
@ stub _atol_l
@ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
@ stub _atoldbl_l
-@ stub _atoll_l
+@ cdecl -ret64 _atoll_l(str ptr) MSVCRT__atoll_l
@ cdecl _beep(long long) MSVCRT__beep
@ cdecl _beginthread(ptr long ptr)
@ cdecl _beginthreadex(ptr long ptr ptr long ptr)
@@ -2141,8 +2141,8 @@
@ cdecl _wtoi_l(wstr ptr) MSVCRT__wtoi_l
@ cdecl _wtol(wstr) MSVCRT__wtol
@ cdecl _wtol_l(wstr ptr) MSVCRT__wtol_l
-@ stub _wtoll
-@ stub _wtoll_l
+@ cdecl -ret64 _wtoll(wstr) MSVCRT__wtoll
+@ cdecl -ret64 _wtoll_l(wstr ptr) MSVCRT__wtoll_l
@ cdecl _wunlink(wstr) MSVCRT__wunlink
@ cdecl _wutime32(wstr ptr)
@ cdecl _wutime64(wstr ptr)
@@ -2173,7 +2173,7 @@
@ cdecl atof(str) MSVCRT_atof
@ cdecl atoi(str) MSVCRT_atoi
@ cdecl atol(str) ntdll.atol
-@ stub atoll
+@ cdecl -ret64 atoll(str) MSVCRT_atoll
@ cdecl bsearch(ptr ptr long long ptr) MSVCRT_bsearch
@ cdecl bsearch_s(ptr ptr long long ptr ptr) MSVCRT_bsearch_s
@ cdecl btowc(long) MSVCRT_btowc
--
1.9.1
More information about the wine-patches
mailing list