1/* 2** Copyright 2001, Travis Geiselbrecht. 3** Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de> 4** All rights reserved. Distributed under the terms of the NewOS License. 5*/ 6 7 8#include <wchar_private.h> 9 10 11wchar_t * 12__wcstok(wchar_t* wcs, const wchar_t* delim, wchar_t** savePtr) 13{ 14 wchar_t *wcsBegin, *wcsEnd; 15 16 if (wcs == NULL && savePtr == NULL) 17 return NULL; 18 19 wcsBegin = wcs ? wcs : *savePtr; 20 if (wcsBegin == NULL) 21 return NULL; 22 23 wcsBegin += wcsspn(wcsBegin, delim); 24 if (*wcsBegin == '\0') { 25 if (savePtr) 26 *savePtr = NULL; 27 return NULL; 28 } 29 30 wcsEnd = wcspbrk(wcsBegin, delim); 31 if (wcsEnd && *wcsEnd != '\0') 32 *wcsEnd++ = '\0'; 33 if (savePtr) 34 *savePtr = wcsEnd; 35 36 return wcsBegin; 37} 38 39 40B_DEFINE_WEAK_ALIAS(__wcstok, wcstok); 41