From b35e9e19e93b0c69303444e9974ee640a924f798 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Sat, 15 Oct 2011 00:14:37 +0200 Subject: lavu: add av_strtok() The function strtok_r() is part of the POSIX.1 specification, but is not available on some platforms. We provide an internal implementation, so we do not need to rely on a platform implementation. --- libavutil/avstring.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'libavutil/avstring.c') diff --git a/libavutil/avstring.c b/libavutil/avstring.c index 4c504482da..247cd71745 100644 --- a/libavutil/avstring.c +++ b/libavutil/avstring.c @@ -160,6 +160,35 @@ char *av_get_token(const char **buf, const char *term) return ret; } +char *av_strtok(char *s, const char *delim, char **saveptr) +{ + char *tok; + + if (!s && !(s = *saveptr)) + return NULL; + + /* skip leading delimiters */ + s += strspn(s, delim); + + /* s now points to the first non delimiter char, or to the end of the string */ + if (!*s) { + *saveptr = NULL; + return NULL; + } + tok = s++; + + /* skip non delimiters */ + s += strcspn(s, delim); + if (*s) { + *s = 0; + *saveptr = s+1; + } else { + *saveptr = NULL; + } + + return tok; +} + #ifdef TEST #undef printf -- cgit v1.2.3