1 /* wcstok( wchar_t *, const wchar_t * )
3 This file is part of the Public Domain C Library (PDCLib).
4 Permission is granted to use, modify, and / or redistribute at will.
11 wchar_t * wcstok( wchar_t * _PDCLIB_restrict s1,
12 const wchar_t * _PDCLIB_restrict s2,
13 wchar_t ** _PDCLIB_restrict ptr )
15 const wchar_t * p = s2;
24 /* old string continued */
27 /* No old string, no new string, nothing to do */
33 /* skipping leading s2 characters */
38 /* found seperator; skip and start over */
48 /* no more to parse */
49 return ( *ptr = NULL );
52 /* skipping non-s2 characters */
61 /* found seperator; overwrite with '\0', position *ptr, return */
69 /* parsed to end of string */
77 #include "_PDCLIB_test.h"
81 // MinGW at least has a very nonconforming (different signature!) variety
84 wchar_t s[] = L"_a_bc__d_";
85 wchar_t* state = NULL;
88 TESTCASE( ( tokres = wcstok( s, L"_", &state ) ) == &s[1] );
89 TESTCASE( s[1] == L'a' );
90 TESTCASE( s[2] == L'\0' );
91 TESTCASE( ( tokres = wcstok( NULL, L"_", &state ) ) == &s[3] );
92 TESTCASE( s[3] == L'b' );
93 TESTCASE( s[4] == L'c' );
94 TESTCASE( s[5] == L'\0' );
95 TESTCASE( ( tokres = wcstok( NULL, L"_", &state ) ) == &s[7] );
96 TESTCASE( s[6] == L'_' );
97 TESTCASE( s[7] == L'd' );
98 TESTCASE( s[8] == L'\0' );
99 TESTCASE( ( tokres = wcstok( NULL, L"_", &state ) ) == NULL );
100 wcscpy( s, L"ab_cd" );
101 TESTCASE( ( tokres = wcstok( s, L"_", &state ) ) == &s[0] );
102 TESTCASE( s[0] == L'a' );
103 TESTCASE( s[1] == L'b' );
104 TESTCASE( s[2] == L'\0' );
105 TESTCASE( ( tokres = wcstok( NULL, L"_", &state ) ) == &s[3] );
106 TESTCASE( s[3] == L'c' );
107 TESTCASE( s[4] == L'd' );
108 TESTCASE( s[5] == L'\0' );
109 TESTCASE( ( tokres = wcstok( NULL, L"_", &state ) ) == NULL );