From 8eed4615239c78eb10899ec9a54af7965b9db2c9 Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Mon, 3 Apr 2017 13:25:26 -0700 Subject: [PATCH v2 3/3] ucrtbase: Add _iswblank_l Signed-off-by: Daniel Lehman --- .../api-ms-win-crt-string-l1-1-0.spec | 4 ++-- dlls/msvcr120/msvcr120.spec | 4 ++-- dlls/msvcr120_app/msvcr120_app.spec | 4 ++-- dlls/msvcrt/wcs.c | 16 ++++++++++++++++ dlls/ucrtbase/tests/misc.c | 8 ++++++++ dlls/ucrtbase/ucrtbase.spec | 4 ++-- 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec b/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec index fe3ae54..0f30b05 100644 --- a/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec +++ b/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec @@ -21,7 +21,7 @@ @ cdecl _isupper_l(long ptr) ucrtbase._isupper_l @ stub _iswalnum_l @ cdecl _iswalpha_l(long ptr) ucrtbase._iswalpha_l -@ stub _iswblank_l +@ cdecl _iswblank_l(long ptr) ucrtbase._iswblank_l @ stub _iswcntrl_l @ stub _iswcsym_l @ stub _iswcsymf_l @@ -113,7 +113,7 @@ @ cdecl iswalnum(long) ucrtbase.iswalnum @ cdecl iswalpha(long) ucrtbase.iswalpha @ cdecl iswascii(long) ucrtbase.iswascii -@ stub iswblank +@ cdecl iswblank(long) ucrtbase.iswblank @ cdecl iswcntrl(long) ucrtbase.iswcntrl @ cdecl iswctype(long long) ucrtbase.iswctype @ cdecl iswdigit(long) ucrtbase.iswdigit diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 1701c4a..d73a603 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1369,7 +1369,7 @@ @ cdecl _isupper_l(long ptr) MSVCRT__isupper_l @ stub _iswalnum_l @ cdecl _iswalpha_l(long ptr) MSVCRT__iswalpha_l -@ stub _iswblank_l +@ cdecl _iswblank_l(long ptr) MSVCRT__iswblank_l @ stub _iswcntrl_l @ stub _iswcsym_l @ stub _iswcsymf_l @@ -2228,7 +2228,7 @@ @ cdecl iswalnum(long) MSVCRT_iswalnum @ cdecl iswalpha(long) ntdll.iswalpha @ cdecl iswascii(long) MSVCRT_iswascii -@ stub iswblank +@ cdecl iswblank(long) MSVCRT_iswblank @ cdecl iswcntrl(long) MSVCRT_iswcntrl @ cdecl iswctype(long long) ntdll.iswctype @ cdecl iswdigit(long) MSVCRT_iswdigit diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 023aa00..942d212 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1234,7 +1234,7 @@ @ cdecl _isupper_l(long ptr) msvcr120._isupper_l @ stub _iswalnum_l @ cdecl _iswalpha_l(long ptr) msvcr120._iswalpha_l -@ stub _iswblank_l +@ cdecl _iswblank_l(long ptr) msvcr120._iswblank_l @ stub _iswcntrl_l @ stub _iswcsym_l @ stub _iswcsymf_l @@ -1891,7 +1891,7 @@ @ cdecl iswalnum(long) msvcr120.iswalnum @ cdecl iswalpha(long) msvcr120.iswalpha @ cdecl iswascii(long) msvcr120.iswascii -@ stub iswblank +@ cdecl iswblank(long) msvcr120.iswblank @ cdecl iswcntrl(long) msvcr120.iswcntrl @ cdecl iswctype(long long) msvcr120.iswctype @ cdecl iswdigit(long) msvcr120.iswdigit diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index 89c4152..a3429ea 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -1866,6 +1866,22 @@ INT CDECL MSVCRT__iswctype_l( MSVCRT_wchar_t wc, MSVCRT_wctype_t type, MSVCRT__l } /********************************************************************* + * _iswblank_l (MSVCRT.@) + */ +INT CDECL MSVCRT__iswblank_l( MSVCRT_wchar_t wc, MSVCRT__locale_t locale ) +{ + return wc == '\t' || MSVCRT__iswctype_l( wc, MSVCRT__BLANK, locale ); +} + +/********************************************************************* + * iswblank (MSVCRT.@) + */ +INT CDECL MSVCRT_iswblank( MSVCRT_wchar_t wc ) +{ + return wc == '\t' || MSVCRT__iswctype_l( wc, MSVCRT__BLANK, NULL ); +} + +/********************************************************************* * wcscpy_s (MSVCRT.@) */ INT CDECL MSVCRT_wcscpy_s( MSVCRT_wchar_t* wcDest, MSVCRT_size_t numElement, const MSVCRT_wchar_t *wcSrc) diff --git a/dlls/ucrtbase/tests/misc.c b/dlls/ucrtbase/tests/misc.c index 5a1f8dc..213700f 100644 --- a/dlls/ucrtbase/tests/misc.c +++ b/dlls/ucrtbase/tests/misc.c @@ -90,6 +90,8 @@ static int (CDECL *p__isctype)(int,int); static int (CDECL *p_isblank)(int); static int (CDECL *p__isblank_l)(int,_locale_t); static int (CDECL *p__iswctype_l)(int,int,_locale_t); +static int (CDECL *p_iswblank)(int); +static int (CDECL *p__iswblank_l)(wint_t,_locale_t); static void test__initialize_onexit_table(void) { @@ -388,6 +390,8 @@ static BOOL init(void) p_isblank = (void*)GetProcAddress(module, "isblank"); p__isblank_l = (void*)GetProcAddress(module, "_isblank_l"); p__iswctype_l = (void*)GetProcAddress(module, "_iswctype_l"); + p_iswblank = (void*)GetProcAddress(module, "iswblank"); + p__iswblank_l = (void*)GetProcAddress(module, "_iswblank_l"); return TRUE; } @@ -493,9 +497,13 @@ static void test_isblank(void) todo_wine ok(!p__iswctype_l(c, _BLANK, NULL), "tab shouldn't be blank\n"); else ok(p__iswctype_l(c, _BLANK, NULL), "%d should be blank\n", c); + ok(p_iswblank(c), "%d should be blank\n", c); + ok(p__iswblank_l(c, NULL), "%d should be blank\n", c); } else { todo_wine_if(c == 0xa0) { ok(!p__iswctype_l(c, _BLANK, NULL), "%d shouldn't be blank\n", c); + ok(!p_iswblank(c), "%d shouldn't be blank\n", c); + ok(!p__iswblank_l(c, NULL), "%d shouldn't be blank\n", c); } } } diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 9c0b807..79ba494 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -508,7 +508,7 @@ @ cdecl _isupper_l(long ptr) MSVCRT__isupper_l @ stub _iswalnum_l @ cdecl _iswalpha_l(long ptr) MSVCRT__iswalpha_l -@ stub _iswblank_l +@ cdecl _iswblank_l(long ptr) MSVCRT__iswblank_l @ stub _iswcntrl_l @ stub _iswcsym_l @ stub _iswcsymf_l @@ -2362,7 +2362,7 @@ @ cdecl iswalnum(long) MSVCRT_iswalnum @ cdecl iswalpha(long) ntdll.iswalpha @ cdecl iswascii(long) MSVCRT_iswascii -@ stub iswblank +@ cdecl iswblank(long) MSVCRT_iswblank @ cdecl iswcntrl(long) MSVCRT_iswcntrl @ cdecl iswctype(long long) ntdll.iswctype @ cdecl iswdigit(long) MSVCRT_iswdigit -- 1.9.5