浏览代码

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5811 54d463be-8e91-2dee-dedb-b68131a5f0ec

Lance 19 年之前
父节点
当前提交
9eff393b23
共有 2 个文件被更改,包括 38 次插入0 次删除
  1. 33 0
      src/common/strlib.c
  2. 5 0
      src/common/strlib.h

+ 33 - 0
src/common/strlib.c

@@ -136,3 +136,36 @@ char *trim(char *str, const char *delim)
 	strcpy(str,buf);
 	return str;
 }
+
+#ifdef _WIN32
+char *athena_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')
+	{
+		*save_ptr = s;
+		return NULL;
+	}
+
+	/* Find the end of the token.  */
+	token = s;
+	s = strpbrk (token, delim);
+	if (s == NULL)
+		/* This token finishes the string.  */
+		/* *save_ptr = __rawmemchr (token, '\0'); */
+		*save_ptr = token + strlen (token);
+	else
+	{
+		/* Terminate the token and make *SAVE_PTR point past it.  */
+		*s = '\0';
+		*save_ptr = s + 1;
+	}
+	return token;
+}
+#endif

+ 5 - 0
src/common/strlib.h

@@ -11,6 +11,11 @@ char* jstrescape (char* pt);
 char* jstrescapecpy (char* pt,char* spt);
 int jmemescapecpy (char* pt,char* spt, int size);
 
+#if !defined(HAVE_mit_thread) && !defined(HAVE_STRTOK_R)
+#define strtok_r(s,delim,save_ptr) athena_strtok_r(s,delim,save_ptr)
+char *athena_strtok_r (char *s, const char *delim, char **save_ptr);
+#endif
+
 // custom functions
 int remove_control_chars(unsigned char *);
 char *trim(char *str, const char *delim);