[PATCH] [Msvcrt]: implemented wcscat_s
Eric Pouech
eric.pouech at orange.fr
Thu Oct 2 15:00:44 CDT 2008
A+
---
dlls/msvcrt/msvcrt.spec | 1 +
dlls/msvcrt/wcs.c | 32 ++++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index c54d33e..ea61726 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -761,6 +761,7 @@
@ cdecl vswprintf(ptr wstr ptr) MSVCRT_vswprintf
@ cdecl vwprintf(wstr ptr) MSVCRT_vwprintf
@ cdecl wcscat(wstr wstr) ntdll.wcscat
+@ cdecl wcscat_s(str 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..7a8a0d7 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -1077,3 +1077,35 @@ 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_size_t i, j;
+
+ if (!dst || elem == 0) return MSVCRT_EINVAL;
+ if (!src)
+ {
+ dst[0] = '\0';
+ return MSVCRT_EINVAL;
+ }
+
+ for (i = 0; i < elem; i++)
+ {
+ if (dst[i] == '\0')
+ {
+ for (j = 0; (j + i) < elem; j++)
+ {
+ if ((dst[j + i] = src[j]) == '\0') return 0;
+ }
+ }
+ }
+ /* Set the first element to 0, not the first element after the skipped part */
+ dst[0] = '\0';
+ return MSVCRT_ERANGE;
+}
+
More information about the wine-patches
mailing list