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