6e8b5609e22ebedfd0d1b3e1a63cecb6f4e6876c
[reactos.git] / reactos / sdk / lib / crt / string / strtok_s.c
1 /* Taken from Wine Staging msvcrt/string.c */
2
3 #include <precomp.h>
4 #include <internal/wine/msvcrt.h>
5
6 /*********************************************************************
7 * strtok_s (MSVCRT.@)
8 */
9 char * CDECL strtok_s(char *str, const char *delim, char **ctx)
10 {
11 if (!MSVCRT_CHECK_PMT(delim != NULL)) return NULL;
12 if (!MSVCRT_CHECK_PMT(ctx != NULL)) return NULL;
13 if (!MSVCRT_CHECK_PMT(str != NULL || *ctx != NULL)) return NULL;
14
15 if(!str)
16 str = *ctx;
17
18 while(*str && strchr(delim, *str))
19 str++;
20 if(!*str)
21 {
22 *ctx = str;
23 return NULL;
24 }
25
26 *ctx = str+1;
27 while(**ctx && !strchr(delim, **ctx))
28 (*ctx)++;
29 if(**ctx)
30 *(*ctx)++ = 0;
31
32 return str;
33 }