[PATCH] [Msvcrt]: implemented wcscat_s

Eric Pouech eric.pouech at orange.fr
Sun Oct 12 06:34:16 CDT 2008




A+
---

 dlls/msvcrt/msvcrt.spec |    1 +
 dlls/msvcrt/wcs.c       |   26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)


diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 0da6a25..b11af56 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -762,6 +762,7 @@
 @ cdecl vswprintf(ptr wstr ptr) MSVCRT_vswprintf
 @ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf
 @ cdecl wcscat(wstr wstr) ntdll.wcscat
+@ cdecl wcscat_s(wstr long wstr) MSVCRT_wcscat_s
 @ cdecl wcschr(wstr long) ntdll.wcschr
 @ cdecl wcscmp(wstr wstr) ntdll.wcscmp
 @ cdecl wcscoll(wstr wstr) MSVCRT_wcscoll
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 5c80092..81528be 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -1077,3 +1077,29 @@ INT CDECL MSVCRT_wcsncpy_s( MSVCRT_wchar_t* wcDest, MSVCRT_size_t numElement, co
 
     return 0;
 }
+
+/******************************************************************
+ *		wcscat_s (MSVCRT.@)
+ *
+ */
+INT CDECL MSVCRT_wcscat_s(MSVCRT_wchar_t* dst, MSVCRT_size_t elem, const MSVCRT_wchar_t* src)
+{
+    MSVCRT_wchar_t* ptr = dst;
+
+    if (!dst || elem == 0) return MSVCRT_EINVAL;
+    if (!src)
+    {
+        dst[0] = '\0';
+        return MSVCRT_EINVAL;
+    }
+
+    /* seek to end of dst string (or elem if no end of string is found */
+    while (ptr < dst + elem && *ptr != '\0') ptr++;
+    while (ptr < dst + elem)
+    {
+        if ((*ptr++ = *src++) == '\0') return 0;
+    }
+    /* not enough space */
+    dst[0] = '\0';
+    return MSVCRT_ERANGE;
+}





More information about the wine-patches mailing list