| /* | 
 |  * Copyright (C) 2002     Manuel Novoa III | 
 |  * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org> | 
 |  * | 
 |  * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. | 
 |  */ | 
 |  | 
 | #include "_string.h" | 
 |  | 
 | #ifdef WANT_WIDE | 
 | # define Wstrlcpy __wcslcpy | 
 | # define Wstrxfrm wcsxfrm | 
 | #else | 
 | # define Wstrlcpy strlcpy | 
 | # define Wstrxfrm strxfrm | 
 | #endif | 
 |  | 
 | /* OpenBSD function: | 
 |  * Copy at most n-1 chars from src to dst and nul-terminate dst. | 
 |  * Returns strlen(src), so truncation occurred if the return value is >= n. */ | 
 |  | 
 | size_t Wstrlcpy(register Wchar *__restrict dst, | 
 | 				  register const Wchar *__restrict src, | 
 | 				  size_t n) | 
 | { | 
 | 	const Wchar *src0 = src; | 
 | 	Wchar dummy[1]; | 
 |  | 
 | 	if (!n) { | 
 | 		dst = dummy; | 
 | 	} else { | 
 | 		--n; | 
 | 	} | 
 |  | 
 | 	while ((*dst = *src) != 0) { | 
 | 		if (n) { | 
 | 			--n; | 
 | 			++dst; | 
 | 		} | 
 | 		++src; | 
 | 	} | 
 |  | 
 | 	return src - src0; | 
 | } | 
 | #ifndef WANT_WIDE | 
 | libc_hidden_def(strlcpy) | 
 | #endif | 
 |  | 
 | #ifndef __UCLIBC_HAS_LOCALE__ | 
 | strong_alias(Wstrlcpy,Wstrxfrm) | 
 | #endif |