Piotr Caban : msvcrt: Add _mbsnbcpy_s_l implementation.

Alexandre Julliard julliard at winehq.org
Mon May 19 15:09:59 CDT 2014


Module: wine
Branch: master
Commit: aebe1c69f9a7e41fbc005365737a00aaa238a332
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=aebe1c69f9a7e41fbc005365737a00aaa238a332

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon May 19 11:42:58 2014 +0200

msvcrt: Add _mbsnbcpy_s_l implementation.

---

 dlls/msvcr100/msvcr100.spec |    2 +-
 dlls/msvcr110/msvcr110.spec |    2 +-
 dlls/msvcr80/msvcr80.spec   |    2 +-
 dlls/msvcr90/msvcr90.spec   |    2 +-
 dlls/msvcrt/mbcs.c          |   15 ++++++++++++---
 dlls/msvcrt/msvcrt.spec     |    2 +-
 6 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 07d50fc..4d577e7 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1132,7 +1132,7 @@
 @ cdecl _mbsnbcpy(ptr str long)
 @ stub _mbsnbcpy_l
 @ cdecl _mbsnbcpy_s(ptr long str long)
-@ stub _mbsnbcpy_s_l
+@ cdecl _mbsnbcpy_s_l(ptr long str long ptr)
 @ cdecl _mbsnbicmp(str str long)
 @ stub _mbsnbicmp_l
 @ cdecl _mbsnbicoll(str str long)
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index e6576e0..b2141d6 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1490,7 +1490,7 @@
 @ cdecl _mbsnbcpy(ptr str long)
 @ stub _mbsnbcpy_l
 @ cdecl _mbsnbcpy_s(ptr long str long)
-@ stub _mbsnbcpy_s_l
+@ cdecl _mbsnbcpy_s_l(ptr long str long ptr)
 @ cdecl _mbsnbicmp(str str long)
 @ stub _mbsnbicmp_l
 @ cdecl _mbsnbicoll(str str long)
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 9c7f85b..b510e76 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -804,7 +804,7 @@
 @ cdecl _mbsnbcpy(ptr str long)
 @ stub _mbsnbcpy_l
 @ cdecl _mbsnbcpy_s(ptr long str long)
-@ stub _mbsnbcpy_s_l
+@ cdecl _mbsnbcpy_s_l(ptr long str long ptr)
 @ cdecl _mbsnbicmp(str str long)
 @ stub _mbsnbicmp_l
 @ cdecl _mbsnbicoll(str str long)
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index e86541c..345afe9 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -782,7 +782,7 @@
 @ cdecl _mbsnbcpy(ptr str long)
 @ stub _mbsnbcpy_l
 @ cdecl _mbsnbcpy_s(ptr long str long)
-@ stub _mbsnbcpy_s_l
+@ cdecl _mbsnbcpy_s_l(ptr long str long ptr)
 @ cdecl _mbsnbicmp(str str long)
 @ stub _mbsnbicmp_l
 @ cdecl _mbsnbicoll(str str long)
diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c
index dd14abd..3f4590e 100644
--- a/dlls/msvcrt/mbcs.c
+++ b/dlls/msvcrt/mbcs.c
@@ -638,12 +638,13 @@ unsigned char* CDECL _mbsncpy(unsigned char* dst, const unsigned char* src, MSVC
 }
 
 /*********************************************************************
- *              _mbsnbcpy_s(MSVCRT.@)
+ *              _mbsnbcpy_s_l(MSVCRT.@)
  * REMARKS
  * Unlike _mbsnbcpy this function does not pad the rest of the dest
  * string with 0
  */
-int CDECL _mbsnbcpy_s(unsigned char* dst, MSVCRT_size_t size, const unsigned char* src, MSVCRT_size_t n)
+int CDECL _mbsnbcpy_s_l(unsigned char* dst, MSVCRT_size_t size,
+        const unsigned char* src, MSVCRT_size_t n, MSVCRT__locale_t locale)
 {
     MSVCRT_size_t pos = 0;
 
@@ -657,7 +658,7 @@ int CDECL _mbsnbcpy_s(unsigned char* dst, MSVCRT_size_t size, const unsigned cha
     if(!n)
         return 0;
 
-    if(get_mbcinfo()->ismbcodepage)
+    if((locale ? locale->mbcinfo : get_mbcinfo())->ismbcodepage)
     {
         int is_lead = 0;
         while (*src && n)
@@ -703,6 +704,14 @@ int CDECL _mbsnbcpy_s(unsigned char* dst, MSVCRT_size_t size, const unsigned cha
 }
 
 /*********************************************************************
+ *              _mbsnbcpy_s(MSVCRT.@)
+ */
+int CDECL _mbsnbcpy_s(unsigned char* dst, MSVCRT_size_t size, const unsigned char* src, MSVCRT_size_t n)
+{
+    return _mbsnbcpy_s_l(dst, size, src, n, NULL);
+}
+
+/*********************************************************************
  *              _mbsnbcpy(MSVCRT.@)
  * REMARKS
  *  Like strncpy this function doesn't enforce the string to be
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index a7d1a97..086bd82 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -755,7 +755,7 @@
 @ cdecl _mbsnbcpy(ptr str long)
 # stub _mbsnbcpy_l(ptr str long ptr)
 @ cdecl _mbsnbcpy_s(ptr long str long)
-# stub _mbsnbcpy_s_l(ptr long str long ptr)
+@ cdecl _mbsnbcpy_s_l(ptr long str long ptr)
 @ cdecl _mbsnbicmp(str str long)
 # stub _mbsnbicmp_l(str str long ptr)
 @ cdecl _mbsnbicoll(str str long)




More information about the wine-cvs mailing list