]> pd.if.org Git - pdclib/blobdiff - functions/string/strtok.c
Reviewed / implemented.
[pdclib] / functions / string / strtok.c
index 1e588e84bb1e52d9390c83bab8945eec82ca5b44..69b45a73cb8aeb0753395907425beed9643ce13f 100644 (file)
@@ -5,4 +5,35 @@
 // This code is Public Domain. Use, modify, and redistribute at will.
 // ----------------------------------------------------------------------------
 
-char * strtok( char * restrict s1, const char * restrict s2 ) { /* TODO */ };
+char * strtok( char * restrict src, const char * restrict seperators )
+{
+    static char * store = NULL;
+    size_t token_length;
+
+    if ( src != NULL )
+    {
+        // new string
+        store = src;
+    }
+    if ( store == NULL )
+    {
+        // no old string, no new string, nothing to do
+        return NULL;
+    }
+    src += strspn( src, seperators ); // skipping leading seperators
+    if ( strlen( src ) == 0 )
+    {
+        // no more to parse
+        return ( store = NULL );
+    }
+    token_length = strcspn( src, seperators );
+    if ( src[ token_length ] == '\0' )
+    {
+        // parsed to end of string
+        store = NULL;
+        return src;
+    }
+    src[ token_length ] = '\0';
+    store = src + token_length + 1;
+    return src;
+}