#if defined(__clang_analyzer__)
#define SDL_DISABLE_ANALYZE_MACROS 1
#endif
#include "../SDL_internal.h"
#include "SDL_stdinc.h"
char *SDL_strtokr(char *s1, const char *s2, char **ptr)
{
#ifdef HAVE_STRTOK_R
return strtok_r(s1, s2, ptr);
#else
const char *p = s2;
if (!s2 || !ptr || (!s1 && !*ptr)) return NULL;
if (s1 != NULL) {
*ptr = s1;
} else {
if (*ptr == NULL) {
return NULL;
}
s1 = *ptr;
}
while (*p && *s1) {
if (*s1 == *p) {
++s1;
p = s2;
continue;
}
++p;
}
if (! *s1) {
*ptr = s1;
return NULL;
}
*ptr = s1;
while (**ptr) {
p = s2;
while (*p) {
if (**ptr == *p++) {
*((*ptr)++) = '\0';
return s1;
}
}
++(*ptr);
}
return s1;
#endif
}