xref: /csrg-svn/lib/libc/string/strtok.c (revision 26538)
124193Skre /*
224193Skre  * Copyright (c) 1980 Regents of the University of California.
324193Skre  * All rights reserved.  The Berkeley software License Agreement
424193Skre  * specifies the terms and conditions for redistribution.
524193Skre  */
624193Skre 
724193Skre /*
824193Skre  * Sys5 compat routine
924193Skre  */
1024193Skre 
11*26538Sdonn #if defined(LIBC_SCCS) && !defined(lint)
12*26538Sdonn static char sccsid[] = "@(#)strtok.c	5.2 (Berkeley) 86/03/09";
1324193Skre #endif
1424193Skre 
1524193Skre char *
1624193Skre strtok(s, sep)
1724193Skre 	register char *s, *sep;
1824193Skre {
1924193Skre 	register char *p;
2024193Skre 	register c;
2124193Skre 	static char *lasts;
2224193Skre 
2324193Skre 	if (s == 0)
2424193Skre 		s = lasts;
2524193Skre 	if (s == 0)
2624193Skre 		return (0);
2724193Skre 
2824193Skre 	while (c = *s) {
2924193Skre 		if (!index(sep, c))
3024193Skre 			break;
3124193Skre 		s++;
3224193Skre 	}
3324193Skre 
3424193Skre 	if (c == '\0') {
3524193Skre 		lasts = 0;
3624193Skre 		return (0);
3724193Skre 	}
3824193Skre 
3924193Skre 	for (p = s; c = *++p; )
4024193Skre 		if (index(sep, c))
4124193Skre 			break;
4224193Skre 
4324193Skre 	if (c == '\0')
4424193Skre 		lasts = 0;
4524193Skre 	else {
4624193Skre 		*p++ = '\0';
4724193Skre 		lasts = p;
4824193Skre 	}
4924193Skre 	return (s);
5024193Skre }
51