Back to index

glibc  2.9
Functions
strsep.c File Reference
#include <string.h>

Go to the source code of this file.

Functions

char * __strsep (char **stringp, const char *delim)

Function Documentation

char* __strsep ( char **  stringp,
const char *  delim 
)

Definition at line 25 of file strsep.c.

{
  char *begin, *end;

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

  /* A frequent case is when the delimiter string contains only one
     character.  Here we don't need to call the expensive `strpbrk'
     function and instead work using `strchr'.  */
  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
    /* Find the end of the token.  */
    end = strpbrk (begin, delim);

  if (end)
    {
      /* Terminate the token and set *STRINGP past NUL character.  */
      *end++ = '\0';
      *stringp = end;
    }
  else
    /* No more delimiters; this is the last token.  */
    *stringp = NULL;

  return begin;
}

Here is the call graph for this function: