+
+EXPORT char *strpbrk(const char *haystack, const char *accept)
+{
+ while( *haystack )
+ {
+ for( int i = 0; accept[i]; i ++ )
+ {
+ if( accept[i] == *haystack )
+ return (char*)haystack;
+ }
+ }
+ return NULL;
+}
+
+char *strtok(char *str, const char *delim)
+{
+ static char *__saveptr;
+ return strtok_r(str, delim, &__saveptr);
+}
+char *strtok_r(char *str, const char *delim, char **saveptr)
+{
+ char *pos = (str ? str : *saveptr);
+
+ while( strchr(delim, *pos) )
+ pos ++;
+
+ if( *pos == '\0' )
+ return NULL;
+
+ char *ret = pos;
+ while( !strchr(delim, *pos) )
+ pos ++;
+
+ // Cap the returned string
+ // - If we're at the end of the original string, don't shift pos
+ if( *pos != '\0' ) {
+ *pos = '\0';
+ pos ++;
+ }
+
+ *saveptr = pos;
+
+ return ret;
+}
+