17efc2e3aSOliver Tappe /* 27efc2e3aSOliver Tappe ** Copyright 2011, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved. 3*47a21c5cSAugustin Cavalier ** Distributed under the terms of the MIT License. 47efc2e3aSOliver Tappe */ 57efc2e3aSOliver Tappe 67efc2e3aSOliver Tappe #include <wchar_private.h> 77efc2e3aSOliver Tappe 87efc2e3aSOliver Tappe 97efc2e3aSOliver Tappe wchar_t* __wcpncpy(wchar_t * dest,const wchar_t * src,size_t n)107efc2e3aSOliver Tappe__wcpncpy(wchar_t* dest, const wchar_t* src, size_t n) 117efc2e3aSOliver Tappe { 127efc2e3aSOliver Tappe const wchar_t* srcEnd = src + n; 137efc2e3aSOliver Tappe wchar_t* destEnd = dest + n; 147efc2e3aSOliver Tappe 157efc2e3aSOliver Tappe while (src < srcEnd && *src != L'\0') 167efc2e3aSOliver Tappe *dest++ = *src++; 177efc2e3aSOliver Tappe 187efc2e3aSOliver Tappe if (dest < destEnd) { 197efc2e3aSOliver Tappe while (--destEnd >= dest) 207efc2e3aSOliver Tappe *destEnd = L'\0'; 217efc2e3aSOliver Tappe } 227efc2e3aSOliver Tappe 237efc2e3aSOliver Tappe return dest; 247efc2e3aSOliver Tappe } 257efc2e3aSOliver Tappe 267efc2e3aSOliver Tappe 277efc2e3aSOliver Tappe B_DEFINE_WEAK_ALIAS(__wcpncpy, wcpncpy); 28