os-workshop

same materials and sample source for RV32 OS projects
git clone http://frotz.net/git/os-workshop.git
Log | Files | Refs

strtok.c (789B)


      1 /*
      2 ** Copyright 2001, Travis Geiselbrecht. All rights reserved.
      3 ** Distributed under the terms of the NewOS License.
      4 */
      5 /*
      6  * Copyright (c) 2008 Travis Geiselbrecht
      7  *
      8  * Use of this source code is governed by a MIT-style
      9  * license that can be found in the LICENSE file or at
     10  * https://opensource.org/licenses/MIT
     11  */
     12 #include <string.h>
     13 #include <stdint.h>
     14 
     15 static char *___strtok = NULL;
     16 
     17 char *
     18 strtok(char *s, char const *ct) {
     19     char *sbegin, *send;
     20 
     21     sbegin  = s ? s : ___strtok;
     22     if (!sbegin) {
     23         return NULL;
     24     }
     25     sbegin += strspn(sbegin,ct);
     26     if (*sbegin == '\0') {
     27         ___strtok = NULL;
     28         return ( NULL );
     29     }
     30     send = strpbrk( sbegin, ct);
     31     if (send && *send != '\0')
     32         *send++ = '\0';
     33     ___strtok = send;
     34     return (sbegin);
     35 }