xref: /haiku/src/system/libroot/posix/wchar/wcsstr.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*
__wcsstr(const wchar_t * haystack,const wchar_t * needleIn)107efc2e3aSOliver Tappe __wcsstr(const wchar_t* haystack, const wchar_t* needleIn)
117efc2e3aSOliver Tappe {
127efc2e3aSOliver Tappe 	if (*needleIn == L'\0')
137efc2e3aSOliver Tappe 		return (wchar_t*)haystack;
147efc2e3aSOliver Tappe 
157efc2e3aSOliver Tappe 	for (; *haystack != L'\0'; ++haystack) {
167efc2e3aSOliver Tappe 		const wchar_t* needle = needleIn;
177efc2e3aSOliver Tappe 		const wchar_t* haystackPointer = haystack;
187efc2e3aSOliver Tappe 		while (*needle == *haystackPointer++ && *needle != 0)
197efc2e3aSOliver Tappe 			++needle;
207efc2e3aSOliver Tappe 		if (*needle == L'\0')
217efc2e3aSOliver Tappe 			return (wchar_t*)haystack;
227efc2e3aSOliver Tappe 	}
237efc2e3aSOliver Tappe 
247efc2e3aSOliver Tappe 	return NULL;
257efc2e3aSOliver Tappe }
267efc2e3aSOliver Tappe 
277efc2e3aSOliver Tappe 
287efc2e3aSOliver Tappe B_DEFINE_WEAK_ALIAS(__wcsstr, wcsstr);
297efc2e3aSOliver Tappe B_DEFINE_WEAK_ALIAS(__wcsstr, wcswcs);
30