glibc/sysdeps/generic/strtok_r.c
Ulrich Drepper 789b13c4e8 Update.
1998-03-23 07:52  H.J. Lu  <hjl@gnu.org>

	* elf/dl-close.c (_dl_close): Fix byte count while removing
	the shared object from the global scope list and optimize
	a little bit.

1998-03-22  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* manual/filesys.texi (Scanning Directory Content): Add missing
	closing brace.
	(Scanning Directory Content): Fix text.

1998-03-22  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* manual/memory.texi (Heap Consistency Checking): Add paragraph
	explaining difference of -lmcheck and MALLOC_CHECK_.

1998-03-23  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/unix/sysv/linux/fstatvfs.c (fstatvfs): Correct some
	typos in comments.

1998-03-20  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* test-skeleton.c (main): Fix test for exit signal.

1998-03-22  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/generic/strtok_r.c: Undefine __strtok_r.

1998-03-22  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/generic/memcmp.c [_LIBC]: Define WORDS_BIGENDIAN as
	appropriate.

1998-03-23 11:14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* libc.map: Export __strtok_r.

1998-03-23  Ulrich Drepper  <drepper@cygnus.com>

	* posix/regex.c (re_compile_fastmap): Remove unused variable
	num_regs and adjust comment.
	Patch by Jim Meyering <meyering@ascend.com>.

	* math/math.h (M_*l): Extend long double constants to be usable
	for 128 bit floats.  Patch by Richard Henderson.

1998-03-23 11:16  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
	Patch by Tim Waugh and Andreas Schwab.
1998-03-23 11:53:10 +00:00

66 lines
1.9 KiB
C

/* Reentrant string tokenizer. Generic version.
Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <string.h>
#undef strtok_r
#undef __strtok_r
/* Parse S into tokens separated by characters in DELIM.
If S is NULL, the saved pointer in SAVE_PTR is used as
the next starting point. For example:
char s[] = "-abc-=-def";
char *sp;
x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
x = strtok_r(NULL, "=", &sp); // x = NULL
// s = "abc\0-def\0"
*/
char *
__strtok_r (s, delim, save_ptr)
char *s;
const char *delim;
char **save_ptr;
{
char *token;
if (s == NULL)
s = *save_ptr;
/* Scan leading delimiters. */
s += strspn (s, delim);
if (*s == '\0')
return NULL;
/* Find the end of the token. */
token = s;
s = strpbrk (token, delim);
if (s == NULL)
/* This token finishes the string. */
*save_ptr = strchr (token, '\0');
else
{
/* Terminate the token and make *SAVE_PTR point past it. */
*s = '\0';
*save_ptr = s + 1;
}
return token;
}
weak_alias (__strtok_r, strtok_r)