xref: /csrg-svn/lib/libc/string/strtok.c (revision 24193)
1*24193Skre /*
2*24193Skre  * Copyright (c) 1980 Regents of the University of California.
3*24193Skre  * All rights reserved.  The Berkeley software License Agreement
4*24193Skre  * specifies the terms and conditions for redistribution.
5*24193Skre  */
6*24193Skre 
7*24193Skre /*
8*24193Skre  * Sys5 compat routine
9*24193Skre  */
10*24193Skre 
11*24193Skre #ifndef lint
12*24193Skre static char sccsid[] = "@(#)strtok.c	5.1 (Berkeley) 85/08/05";
13*24193Skre #endif
14*24193Skre 
15*24193Skre char *
16*24193Skre strtok(s, sep)
17*24193Skre 	register char *s, *sep;
18*24193Skre {
19*24193Skre 	register char *p;
20*24193Skre 	register c;
21*24193Skre 	static char *lasts;
22*24193Skre 
23*24193Skre 	if (s == 0)
24*24193Skre 		s = lasts;
25*24193Skre 	if (s == 0)
26*24193Skre 		return (0);
27*24193Skre 
28*24193Skre 	while (c = *s) {
29*24193Skre 		if (!index(sep, c))
30*24193Skre 			break;
31*24193Skre 		s++;
32*24193Skre 	}
33*24193Skre 
34*24193Skre 	if (c == '\0') {
35*24193Skre 		lasts = 0;
36*24193Skre 		return (0);
37*24193Skre 	}
38*24193Skre 
39*24193Skre 	for (p = s; c = *++p; )
40*24193Skre 		if (index(sep, c))
41*24193Skre 			break;
42*24193Skre 
43*24193Skre 	if (c == '\0')
44*24193Skre 		lasts = 0;
45*24193Skre 	else {
46*24193Skre 		*p++ = '\0';
47*24193Skre 		lasts = p;
48*24193Skre 	}
49*24193Skre 	return (s);
50*24193Skre }
51