diff options
Diffstat (limited to 'private/crt32/string/wcsspn.c')
-rw-r--r-- | private/crt32/string/wcsspn.c | 67 |
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; +} |