diff options
author | Rodeo <[email protected]> | 2015-04-10 14:56:27 +0000 |
---|---|---|
committer | Rodeo <[email protected]> | 2015-04-10 14:56:27 +0000 |
commit | 864ce5a4227d81f688f32e808245b2600f431ac3 (patch) | |
tree | 80fe0b03201bac220a3d2c291129381752b888db /libhb/compat.c | |
parent | f360714523e5f1f78ced2ae8691f3087b80eef65 (diff) |
Move strtok_r fallback to dedicated "compat" files.
Also, check whether the toolchain already provides strtok_r instead of building it unconditionally.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@7076 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/compat.c')
-rw-r--r-- | libhb/compat.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/libhb/compat.c b/libhb/compat.c new file mode 100644 index 000000000..440074bc2 --- /dev/null +++ b/libhb/compat.c @@ -0,0 +1,42 @@ +/* compat.c + + Copyright (c) 2003-2015 HandBrake Team + This file is part of the HandBrake source code + Homepage: <http://handbrake.fr/>. + It may be used under the terms of the GNU General Public License v2. + For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html + */ + +#include "compat.h" + +#ifdef HB_NEED_STRTOK_R +#include <string.h> + +char *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') return NULL; + + /* Find the end of the token. */ + token = s; + s = strpbrk(token, delim); + if (s == NULL) + { + /* This token finishes the string. */ + *save_ptr = strchr(token, '\0'); + } + else + { + /* Terminate the token and make *save_ptr point past it. */ + *s = '\0'; + *save_ptr = s + 1; + } + + return token; +} +#endif // HB_NEED_STRTOK_R |