summaryrefslogtreecommitdiff
path: root/oslib/strsep.c
blob: b71e9f7bf25ab34e17084b737af5ecccd2a0f85a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>

char *strsep(char **stringp, const char *delim)
{
	char *s, *tok;
	const char *spanp;
	int c, sc;

	s = *stringp;
	if (!s)
		return NULL;

	tok = s;
	do {
		c = *s++;
		spanp = delim;
		do {
			sc = *spanp++;
			if (sc == c) {
				if (c == 0)
					s = NULL;
				else
					s[-1] = 0;
				*stringp = s;
				return tok;
			}
		} while (sc != 0);
	} while (1);
}