Piotr Caban : msvcrt: Added strtok_s implementation.

Alexandre Julliard julliard at winehq.org
Mon Apr 26 13:59:28 CDT 2010


Module: wine
Branch: master
Commit: 2b3b860396175653dce6582190748f5a4b5b2b71
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2b3b860396175653dce6582190748f5a4b5b2b71

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Apr 26 14:09:59 2010 +0200

msvcrt: Added strtok_s implementation.

---

 dlls/msvcr80/msvcr80.spec |    2 +-
 dlls/msvcr90/msvcr90.spec |    2 +-
 dlls/msvcrt/msvcrt.spec   |    2 +-
 dlls/msvcrt/string.c      |   27 +++++++++++++++++++++++++++
 4 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 65da427..60e66ba 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1396,7 +1396,7 @@
 @ cdecl strstr(str str) msvcrt.strstr
 @ cdecl strtod(str ptr) msvcrt.strtod
 @ cdecl strtok(str str) msvcrt.strtok
-@ stub strtok_s
+@ cdecl strtok_s(ptr str ptr) msvcrt.strtok_s
 @ cdecl strtol(str ptr long) msvcrt.strtol
 @ cdecl strtoul(str ptr long) msvcrt.strtoul
 @ cdecl strxfrm(ptr str long) msvcrt.strxfrm
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index b7884dc..16a1bc2 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1380,7 +1380,7 @@
 @ cdecl strstr(str str) msvcrt.strstr
 @ cdecl strtod(str ptr) msvcrt.strtod
 @ cdecl strtok(str str) msvcrt.strtok
-@ stub strtok_s
+@ cdecl strtok_s(ptr str ptr) msvcrt.strtok_s
 @ cdecl strtol(str ptr long) msvcrt.strtol
 @ cdecl strtoul(str ptr long) msvcrt.strtoul
 @ cdecl strxfrm(ptr str long) msvcrt.strxfrm
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 0680375..6807de2 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1331,7 +1331,7 @@
 @ cdecl strstr(str str) ntdll.strstr
 @ cdecl strtod(str ptr) MSVCRT_strtod
 @ cdecl strtok(str str) MSVCRT_strtok
-# stub strtok_s
+@ cdecl strtok_s(ptr str ptr) MSVCRT_strtok_s
 @ cdecl strtol(str ptr long) MSVCRT_strtol
 @ cdecl strtoul(str ptr long) MSVCRT_strtoul
 @ cdecl strxfrm(ptr str long) MSVCRT_strxfrm
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index d99c508..459d1a1 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -111,6 +111,33 @@ char * CDECL MSVCRT_strtok( char *str, const char *delim )
     return ret;
 }
 
+/*********************************************************************
+ *		strtok_s  (MSVCRT.@)
+ */
+char * CDECL MSVCRT_strtok_s(char *str, const char *delim, char **ctx)
+{
+    if(!delim || !ctx || (!str && !*ctx)) {
+        MSVCRT__invalid_parameter(NULL, NULL, NULL, 0, 0);
+        *MSVCRT__errno() = MSVCRT_EINVAL;
+        return NULL;
+    }
+
+    if(!str)
+        str = *ctx;
+
+    while(*str && strchr(delim, *str))
+        str++;
+    if(!*str)
+        return NULL;
+
+    *ctx = str+1;
+    while(**ctx && !strchr(delim, **ctx))
+        (*ctx)++;
+    if(**ctx)
+        *(*ctx)++ = 0;
+
+    return str;
+}
 
 /*********************************************************************
  *		_swab (MSVCRT.@)




More information about the wine-cvs mailing list