text: /* 
  ** Copyright 2001, Travis Geiselbrecht. All rights reserved.
  ** Distributed under the terms of the NewOS License.
  */
  /*
   * Copyright (c) 2008 Travis Geiselbrecht
   *
   * Permission is hereby granted, free of charge, to any person obtaining
   * a copy of this software and associated documentation files
   * (the "Software"), to deal in the Software without restriction,
   * including without limitation the rights to use, copy, modify, merge,
   * publish, distribute, sublicense, and/or sell copies of the Software,
   * and to permit persons to whom the Software is furnished to do so,
   * subject to the following conditions:
   *
   * The above copyright notice and this permission notice shall be
   * included in all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   */
  #include <string.h>
  #include <sys/types.h>
  
  static char *___strtok = NULL;
  
  char *
  strtok(char *s, char const *ct)
  {
  	char *sbegin, *send;
  
  	sbegin  = s ? s : ___strtok;
  	if (!sbegin) {
  		return NULL;
  	}
  	sbegin += strspn(sbegin,ct);
  	if (*sbegin == '\0') {
  		___strtok = NULL;
  		return( NULL );
  	}
  	send = strpbrk( sbegin, ct);
  	if (send && *send != '\0')
  		*send++ = '\0';
  	___strtok = send;
  	return (sbegin);
  }
  