|
@@ -136,3 +136,36 @@ char *trim(char *str, const char *delim)
|
|
|
strcpy(str,buf);
|
|
|
return str;
|
|
|
}
|
|
|
+
|
|
|
+#ifdef _WIN32
|
|
|
+char *athena_strtok_r (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')
|
|
|
+ {
|
|
|
+ *save_ptr = s;
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Find the end of the token. */
|
|
|
+ token = s;
|
|
|
+ s = strpbrk (token, delim);
|
|
|
+ if (s == NULL)
|
|
|
+ /* This token finishes the string. */
|
|
|
+ /* *save_ptr = __rawmemchr (token, '\0'); */
|
|
|
+ *save_ptr = token + strlen (token);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ /* Terminate the token and make *SAVE_PTR point past it. */
|
|
|
+ *s = '\0';
|
|
|
+ *save_ptr = s + 1;
|
|
|
+ }
|
|
|
+ return token;
|
|
|
+}
|
|
|
+#endif
|