summaryrefslogtreecommitdiffstats
path: root/private/crt32/string/wcsspn.c
diff options
context:
space:
mode:
Diffstat (limited to 'private/crt32/string/wcsspn.c')
-rw-r--r--private/crt32/string/wcsspn.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/private/crt32/string/wcsspn.c b/private/crt32/string/wcsspn.c
new file mode 100644
index 000000000..7aed8505e
--- /dev/null
+++ b/private/crt32/string/wcsspn.c
@@ -0,0 +1,67 @@
+/***
+*wcsspn.c - find length of initial substring of chars from a control string
+* (wide-character strings)
+*
+* Copyright (c) 1985-1992, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* defines wcsspn() - finds the length of the initial substring of
+* a string consisting entirely of characters from a control string
+* (wide-character strings).
+*
+*Revision History:
+* 11-04-91 ETC Created with source from crtdll.
+* 04-07-92 KRS Updated and ripped out _INTL switches.
+*
+*******************************************************************************/
+
+#include <cruntime.h>
+#include <string.h>
+
+/***
+*int wcsspn(string, control) - find init substring of control chars
+*
+*Purpose:
+* Finds the index of the first character in string that does belong
+* to the set of characters specified by control. This is
+* equivalent to the length of the initial substring of string that
+* consists entirely of characters from control. The L'\0' character
+* that terminates control is not considered in the matching process
+* (wide-character strings).
+*
+*Entry:
+* wchar_t *string - string to search
+* wchar_t *control - string containing characters not to search for
+*
+*Exit:
+* returns index of first wchar_t in string not in control
+*
+*Exceptions:
+*
+*******************************************************************************/
+
+size_t _CALLTYPE1 wcsspn (
+ const wchar_t * string,
+ const wchar_t * control
+ )
+{
+ wchar_t *str = (wchar_t *) string;
+ wchar_t *ctl;
+
+ /* 1st char not in control string stops search */
+ while (*str) {
+ for (ctl = (wchar_t *)control; *ctl != *str; ctl++) {
+ if (*ctl == (wchar_t)0) {
+ /*
+ * reached end of control string without finding a match
+ */
+ return str - string;
+ }
+ }
+ str++;
+ }
+ /*
+ * The whole string consisted of characters from control
+ */
+ return str - string;
+}