Hua Meng : msvcrt: Implement _atol_l.

Alexandre Julliard julliard at winehq.org
Mon Mar 26 16:01:23 CDT 2018


Module: wine
Branch: master
Commit: 2f9dd7f6cbedd58ec551b73acdb873402666d74e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=2f9dd7f6cbedd58ec551b73acdb873402666d74e

Author: Hua Meng <161220092 at smail.nju.edu.cn>
Date:   Mon Mar 26 21:20:22 2018 +0200

msvcrt: Implement _atol_l.

Signed-off-by: Hua Meng <161220092 at smail.nju.edu.cn>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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/string.c                                    | 17 +++++++++++++++++
 dlls/ucrtbase/ucrtbase.spec                             |  2 +-
 10 files changed, 26 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 bb9a677..aa2f513 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
@@ -7,7 +7,7 @@
 @ cdecl -ret64 _atoi64(str) ucrtbase._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) ucrtbase._atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) ucrtbase._atol_l
 @ cdecl _atoldbl(ptr str) ucrtbase._atoldbl
 @ stub _atoldbl_l
 @ cdecl -ret64 _atoll_l(str ptr) ucrtbase._atoll_l
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 11d2351..150f235 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -699,7 +699,7 @@
 @ cdecl -ret64 _atoi64(str) ntdll._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) MSVCRT__atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) MSVCRT__atol_l
 @ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
 @ stub _atoldbl_l
 @ cdecl _beep(long long) MSVCRT__beep
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index 7c4e547..d151480 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1047,7 +1047,7 @@
 @ cdecl -ret64 _atoi64(str) ntdll._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) MSVCRT__atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) MSVCRT__atol_l
 @ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
 @ stub _atoldbl_l
 @ cdecl _beep(long long) MSVCRT__beep
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 9e3deb2..5b13600 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -1037,7 +1037,7 @@
 @ cdecl -ret64 _atoi64(str) ntdll._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) MSVCRT__atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) MSVCRT__atol_l
 @ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
 @ stub _atoldbl_l
 @ cdecl -ret64 _atoll_l(str ptr) MSVCRT__atoll_l
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index 6a6da4b..c60160d 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -1008,7 +1008,7 @@
 @ cdecl -ret64 _atoi64(str) msvcr120._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) msvcr120._atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) msvcr120._atol_l
 @ cdecl _atoldbl(ptr str) msvcr120._atoldbl
 @ stub _atoldbl_l
 @ cdecl -ret64 _atoll_l(str ptr) msvcr120._atoll_l
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 0913fc9..4c7177c 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -363,7 +363,7 @@
 @ cdecl -ret64 _atoi64(str) ntdll._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) MSVCRT__atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) MSVCRT__atol_l
 @ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
 @ stub _atoldbl_l
 @ cdecl _beep(long long) MSVCRT__beep
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 8287864..da9e0ae 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -347,7 +347,7 @@
 @ cdecl -ret64 _atoi64(str) ntdll._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) MSVCRT__atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) MSVCRT__atol_l
 @ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
 @ stub _atoldbl_l
 @ cdecl _beep(long long) MSVCRT__beep
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 15d9ffc..5fe9977 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -334,7 +334,7 @@
 @ cdecl -ret64 _atoi64(str) ntdll._atoi64
 # stub -ret64 _atoi64_l(str ptr)
 @ cdecl _atoi_l(str ptr) MSVCRT__atoi_l
-# stub _atol_l(str ptr)
+@ cdecl _atol_l(str ptr) MSVCRT__atol_l
 @ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
 # stub _atoldbl_l(ptr str ptr)
 @ cdecl _beep(long long) MSVCRT__beep
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index d70f235..50c146f 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -1068,6 +1068,23 @@ int CDECL MSVCRT_atoi(const char *str)
 }
 #endif
 
+/******************************************************************
+ *      _atol_l (MSVCRT.@)
+ */
+MSVCRT_long CDECL MSVCRT__atol_l(const char *str, MSVCRT__locale_t locale)
+{
+    __int64 ret = MSVCRT_strtoi64_l(str, NULL, 10, locale);
+
+    if(ret > LONG_MAX) {
+        ret = LONG_MAX;
+        *MSVCRT__errno() = MSVCRT_ERANGE;
+    } else if(ret < LONG_MIN) {
+        ret = LONG_MIN;
+        *MSVCRT__errno() = MSVCRT_ERANGE;
+    }
+    return ret;
+}
+
 #if _MSVCR_VER>=120
 
 /******************************************************************
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index ff33d86..63d040f 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -198,7 +198,7 @@
 @ cdecl -ret64 _atoi64(str) ntdll._atoi64
 @ stub _atoi64_l
 @ cdecl _atoi_l(str ptr) MSVCRT__atoi_l
-@ stub _atol_l
+@ cdecl _atol_l(str ptr) MSVCRT__atol_l
 @ cdecl _atoldbl(ptr str) MSVCRT__atoldbl
 @ stub _atoldbl_l
 @ cdecl -ret64 _atoll_l(str ptr) MSVCRT__atoll_l




More information about the wine-cvs mailing list