]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Add strtok_r() replacement using strtok()
authorRamiro Polla <ramiro.polla@gmail.com>
Wed, 22 Sep 2010 01:02:52 +0000 (22:02 -0300)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 27 Sep 2010 06:00:04 +0000 (08:00 +0200)
ccache.h
configure.ac
util.c

index 4a9cc9e9ccab6acd0079ff326feae9f35e7807f2..1c8e5777de347e58eafadb514db6e991de169491 100644 (file)
--- 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 */
index a65c31ee5790c09917ba0a59692c8fab542b920f..551412611b43b979977f86821c6b0a1417317291 100644 (file)
@@ -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 905bd24b664679e6e72a5c8d5141ce02573c65ac..e8e8687a3a5e761d0fd4a761eed29a04327a2aa1 100644 (file)
--- 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.