From: Ramiro Polla Date: Wed, 22 Sep 2010 01:02:52 +0000 (-0300) Subject: Add strtok_r() replacement using strtok() X-Git-Tag: v3.2~313 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8fd5fa1b29fd2fc0efe9918148da22caca8eda13;p=thirdparty%2Fccache.git Add strtok_r() replacement using strtok() --- diff --git a/ccache.h b/ccache.h index 4a9cc9e9c..1c8e5777d 100644 --- a/ccache.h +++ b/ccache.h @@ -142,6 +142,9 @@ int x_rename(const char *oldpath, const char *newpath); char *x_readlink(const char *path); char *read_text_file(const char *path); bool read_file(const char *path, size_t size_hint, char **data, size_t *size); +#ifndef HAVE_STRTOK_R +char *strtok_r(char *str, const char *delim, char **saveptr); +#endif /* ------------------------------------------------------------------------- */ /* stats.c */ diff --git a/configure.ac b/configure.ac index a65c31ee5..551412611 100644 --- a/configure.ac +++ b/configure.ac @@ -47,6 +47,7 @@ AC_CHECK_FUNCS(mkstemp) AC_CHECK_FUNCS(realpath) AC_CHECK_FUNCS(snprintf) AC_CHECK_FUNCS(strndup) +AC_CHECK_FUNCS(strtok_r) AC_CHECK_FUNCS(utimes) AC_CHECK_FUNCS(vasprintf) AC_CHECK_FUNCS(vsnprintf) diff --git a/util.c b/util.c index 905bd24b6..e8e8687a3 100644 --- a/util.c +++ b/util.c @@ -169,6 +169,28 @@ mkstemp(char *template) } #endif +#ifndef HAVE_STRTOK_R +/* strtok_r replacement */ +char * +strtok_r(char *str, const char *delim, char **saveptr) +{ + int len; + char *ret; + if (*saveptr) + str = *saveptr; + len = strlen(str); + ret = strtok(str, delim); + if (ret) { + char *save = ret; + while (*save++); + if ((len + 1) == (intptr_t) (save - str)) + save--; + *saveptr = save; + } + return ret; +} +#endif + /* * Copy src to dest, decompressing src if needed. compress_dest decides whether * dest will be compressed.