xref: /haiku/src/system/libroot/posix/wchar/wcpncpy.c (revision 47a21c5c89fc9fd155a3929e5a8f6056b92a2053)
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