diff options
Diffstat (limited to 'lib/strsep.c')
-rw-r--r-- | lib/strsep.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/strsep.c b/lib/strsep.c new file mode 100644 index 000000000..101f9600d --- /dev/null +++ b/lib/strsep.c @@ -0,0 +1,36 @@ +#include "config.h" +#include <string.h> + +char *_xine_private_strsep(char **stringp, const char *delim) { + char *begin, *end; + + begin = *stringp; + if(begin == NULL) + return NULL; + + if(delim[0] == '\0' || delim[1] == '\0') { + char ch = delim[0]; + + if(ch == '\0') + end = NULL; + else { + if(*begin == ch) + end = begin; + else if(*begin == '\0') + end = NULL; + else + end = strchr(begin + 1, ch); + } + } + else + end = strpbrk(begin, delim); + + if(end) { + *end++ = '\0'; + *stringp = end; + } + else + *stringp = NULL; + + return begin; +} |