Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/kernelbase/string.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/dlls/kernelbase/string.c b/dlls/kernelbase/string.c index 4991ba3fd1..8b3d94a9e6 100644 --- a/dlls/kernelbase/string.c +++ b/dlls/kernelbase/string.c @@ -58,52 +58,46 @@ DWORD WINAPI StrCmpNICW(const WCHAR *str, const WCHAR *cmp, DWORD len) return StrCmpNIW(str, cmp, len); } -BOOL WINAPI IsCharBlankW(WCHAR wc) +static WORD get_char_type(char c) { - WORD type; + WORD type = 0; + GetStringTypeA(GetSystemDefaultLCID(), CT_CTYPE1, &c, 1, &type); + return type; +} - return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_BLANK); +BOOL WINAPI IsCharBlankW(WCHAR wc) +{ + return !!(get_char_typeW(wc) & C1_BLANK); } BOOL WINAPI IsCharCntrlW(WCHAR wc) { - WORD type; - - return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_CNTRL); + return !!iscntrlW(wc); } BOOL WINAPI IsCharDigitW(WCHAR wc) { - WORD type; - - return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_DIGIT); + return !!isdigitW(wc); } BOOL WINAPI IsCharPunctW(WCHAR wc) { - WORD type; - - return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_PUNCT); + return !!ispunctW(wc); } BOOL WINAPI IsCharSpaceA(CHAR c) { - WORD type; - return GetStringTypeA(GetSystemDefaultLCID(), CT_CTYPE1, &c, 1, &type) && (type & C1_SPACE); + return !!(get_char_type(c) & C1_SPACE); } BOOL WINAPI IsCharSpaceW(WCHAR wc) { - WORD type; - - return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_SPACE); + return !!isspaceW(wc); } BOOL WINAPI IsCharXDigitW(WCHAR wc) { - WORD type; - - return GetStringTypeW(CT_CTYPE1, &wc, 1, &type) && (type & C1_XDIGIT); + return !!isxdigitW(wc); } WCHAR * WINAPI StrChrW(const WCHAR *str, WCHAR ch) -- 2.20.1