view osdep/strsep.c @ 24385:b3507ba314e1

warning fixes: win32.c: In function 'expCreateSemaphoreA': win32.c:1751: warning: unused variable 'pp' win32.c: In function 'expGetStartupInfoA': win32.c:2187: warning: unused variable 'i' win32.c: In function 'expLoadLibraryA': win32.c:2298: warning: unused variable 'i' win32.c: In function 'expWritePrivateProfileStringA': win32.c:2786: warning: unused variable 'size' win32.c: In function 'expGetSystemTimeAsFileTime': win32.c:3136: warning: unused variable 'local_tm' win32.c: In function 'expGetEnvironmentVariableA': win32.c:3150: warning: unused variable 'p' win32.c: In function 'LookupExternalByName': win32.c:5371: warning: unused variable 'answ'
author diego
date Mon, 10 Sep 2007 13:03:20 +0000
parents 936209c39ed1
children 5cfef41a1771
line wrap: on
line source

/* strsep implementation for systems that do not have it in libc */

#include <stdio.h>
#include <string.h>

#include "config.h"

char *strsep(char **stringp, const char *delim) {
  char *begin, *end;

  begin = *stringp;
  if(begin == NULL)
    return NULL;

  if(delim[0] == '\0' || delim[1] == '\0') {
    char ch = delim[0];

    if(ch == '\0')
      end = NULL;
    else {
      if(*begin == ch)
        end = begin;
      else if(*begin == '\0')
        end = NULL;
      else
        end = strchr(begin + 1, ch);
    }
  }
  else
    end = strpbrk(begin, delim);

  if(end) {
    *end++ = '\0';
    *stringp = end;
  }
  else
    *stringp = NULL;
 
  return begin;
}