⛏️ index : haiku.git

/*
** Copyright 2001, Travis Geiselbrecht.
** Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
** All rights reserved. Distributed under the terms of the NewOS License.
*/


#include <wchar_private.h>


wchar_t *
__wcstok(wchar_t* wcs, const wchar_t* delim, wchar_t** savePtr)
{
	wchar_t *wcsBegin, *wcsEnd;

	if (wcs == NULL && savePtr == NULL)
		return NULL;

	wcsBegin  = wcs ? wcs : *savePtr;
	if (wcsBegin == NULL)
		return NULL;

	wcsBegin += wcsspn(wcsBegin, delim);
	if (*wcsBegin == '\0') {
		if (savePtr)
			*savePtr = NULL;
		return NULL;
	}

	wcsEnd = wcspbrk(wcsBegin, delim);
	if (wcsEnd && *wcsEnd != '\0')
		*wcsEnd++ = '\0';
	if (savePtr)
		*savePtr = wcsEnd;

	return wcsBegin;
}


B_DEFINE_WEAK_ALIAS(__wcstok, wcstok);