diff options
author | George Hazan <george.hazan@gmail.com> | 2014-08-13 14:18:43 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2014-08-13 14:18:43 +0000 |
commit | cf0d0dace174aa2c0e2f8b5df009d02266e0c96a (patch) | |
tree | a534b32bcb4784b7dfae5fe7fa3749bea4cd1c82 /protocols/SkypeClassic/src/util.cpp | |
parent | 96674592dd3493682a6cccb0b3dcf8ca019fd7a4 (diff) |
working C++ version restored
git-svn-id: http://svn.miranda-ng.org/main/trunk@10178 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/SkypeClassic/src/util.cpp')
-rw-r--r-- | protocols/SkypeClassic/src/util.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/protocols/SkypeClassic/src/util.cpp b/protocols/SkypeClassic/src/util.cpp new file mode 100644 index 0000000000..ce5ad9c756 --- /dev/null +++ b/protocols/SkypeClassic/src/util.cpp @@ -0,0 +1,57 @@ +#include <stdlib.h>
+
+char * __cdecl strtok_r (
+ char * string,
+ const char * control,
+ char **nextoken
+ )
+{
+ unsigned char *str;
+ const unsigned char *ctrl = (const unsigned char*)control;
+
+ unsigned char map[32];
+ int count;
+
+ /* Clear control map */
+ for (count = 0; count < 32; count++)
+ map[count] = 0;
+
+ /* Set bits in delimiter table */
+ do {
+ map[*ctrl >> 3] |= (1 << (*ctrl & 7));
+ } while (*ctrl++);
+
+ /* Initialize str. If string is NULL, set str to the saved
+ * pointer (i.e., continue breaking tokens out of the string
+ * from the last strtok call) */
+ if (string)
+ str = (unsigned char*)string;
+ else
+ str = (unsigned char*)(*nextoken);
+
+ /* Find beginning of token (skip over leading delimiters). Note that
+ * there is no token iff this loop sets str to point to the terminal
+ * null (*str == '\0') */
+ while ( (map[*str >> 3] & (1 << (*str & 7))) && *str )
+ str++;
+
+ string = (char*)str;
+
+ /* Find the end of the token. If it is not the end of the string,
+ * put a null there. */
+ for ( ; *str ; str++ )
+ if ( map[*str >> 3] & (1 << (*str & 7)) ) {
+ *str++ = '\0';
+ break;
+ }
+
+ /* Update nextoken (or the corresponding field in the per-thread data
+ * structure */
+ *nextoken = (char*)str;
+
+ /* Determine if a token has been found. */
+ if ( string == (char*)str )
+ return NULL;
+ else
+ return string;
+}
|