(root)/
glibc-2.38/
string/
strsep.c
       1  /* Copyright (C) 1992-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <string.h>
      19  
      20  #undef __strsep
      21  #undef strsep
      22  
      23  char *
      24  __strsep (char **stringp, const char *delim)
      25  {
      26    char *begin, *end;
      27  
      28    begin = *stringp;
      29    if (begin == NULL)
      30      return NULL;
      31  
      32    /* Find the end of the token.  */
      33    end = begin + strcspn (begin, delim);
      34  
      35    if (*end)
      36      {
      37        /* Terminate the token and set *STRINGP past NUL character.  */
      38        *end++ = '\0';
      39        *stringp = end;
      40      }
      41    else
      42      /* No more delimiters; this is the last token.  */
      43      *stringp = NULL;
      44  
      45    return begin;
      46  }
      47  weak_alias (__strsep, strsep)
      48  strong_alias (__strsep, __strsep_g)
      49  libc_hidden_def (__strsep)
      50  libc_hidden_def (__strsep_g)