Module: wine Branch: master Commit: 07c80924ebfe9b416d93221609261d19c9252981 URL: http://source.winehq.org/git/wine.git/?a=commit;h=07c80924ebfe9b416d93221609...
Author: Eric Pouech eric.pouech@orange.fr Date: Sun Oct 12 13:34:16 2008 +0200
msvcrt: Implemented wcscat_s.
---
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; +}