Module: wine Branch: master Commit: 096991428f304681d26e971cd7af6c13b67f48ca URL: http://source.winehq.org/git/wine.git/?a=commit;h=096991428f304681d26e971cd7...
Author: Eric Pouech eric.pouech@orange.fr Date: Thu Oct 2 22:00:34 2008 +0200
msvcrt: Implemented wcsncpy_s.
---
dlls/msvcrt/msvcrt.spec | 1 + dlls/msvcrt/wcs.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index ecdce4f..c54d33e 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -772,6 +772,7 @@ @ cdecl wcsncat(wstr wstr long) ntdll.wcsncat @ cdecl wcsncmp(wstr wstr long) ntdll.wcsncmp @ cdecl wcsncpy(ptr wstr long) ntdll.wcsncpy +@ cdecl wcsncpy_s(ptr long wstr long) MSVCRT_wcsncpy_s @ cdecl wcspbrk(wstr wstr) MSVCRT_wcspbrk @ cdecl wcsrchr(wstr long) ntdll.wcsrchr @ cdecl wcsspn(wstr wstr) ntdll.wcsspn diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index 8eccb39..5c80092 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -1046,3 +1046,34 @@ INT CDECL MSVCRT_wcscpy_s( MSVCRT_wchar_t* wcDest, MSVCRT_size_t numElement, con
return 0; } + +/****************************************************************** + * wcsncpy_s (MSVCRT.@) + */ +INT CDECL MSVCRT_wcsncpy_s( MSVCRT_wchar_t* wcDest, MSVCRT_size_t numElement, const MSVCRT_wchar_t *wcSrc, + MSVCRT_size_t count ) +{ + INT size = 0; + + if (!wcDest || !numElement) + return MSVCRT_EINVAL; + + wcDest[0] = 0; + + if (!wcSrc) + { + return MSVCRT_EINVAL; + } + + size = min(strlenW(wcSrc), count); + + if (size >= numElement) + { + return MSVCRT_ERANGE; + } + + memcpy( wcDest, wcSrc, size*sizeof(WCHAR) ); + wcDest[size] = '\0'; + + return 0; +}