Erich E. Hoover : kernel32: Allow CompareStringEx NORM_LINGUISTIC_CASING flag.
Alexandre Julliard
julliard at winehq.org
Thu Apr 17 13:43:24 CDT 2014
Module: wine
Branch: master
Commit: b0935ab8111323a01fdc837a274deeda93263f8e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b0935ab8111323a01fdc837a274deeda93263f8e
Author: Erich E. Hoover <erich.e.hoover at gmail.com>
Date: Wed Apr 16 13:55:13 2014 -0600
kernel32: Allow CompareStringEx NORM_LINGUISTIC_CASING flag.
---
dlls/kernel32/locale.c | 12 +++++++-----
dlls/kernel32/tests/locale.c | 4 ++--
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index c1d89b7..9597895 100644
--- a/dlls/kernel32/locale.c
+++ b/dlls/kernel32/locale.c
@@ -2985,6 +2985,10 @@ INT WINAPI CompareStringW(LCID lcid, DWORD flags,
INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1,
LPCWSTR str2, INT len2, LPNLSVERSIONINFO version, LPVOID reserved, LPARAM lParam)
{
+ DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT
+ |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP;
+ DWORD semistub_flags = NORM_LINGUISTIC_CASING|0x10000000;
+ /* 0x10000000 is related to diacritics in Arabic, Japanese, and Hebrew */
INT ret;
if (version) FIXME("unexpected version parameter\n");
@@ -2997,16 +3001,14 @@ INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1,
return 0;
}
- if( flags & ~(NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|
- SORT_STRINGSORT|NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP|0x10000000) )
+ if (flags & ~(supported_flags|semistub_flags))
{
SetLastError(ERROR_INVALID_FLAGS);
return 0;
}
- /* this style is related to diacritics in Arabic, Japanese, and Hebrew */
- if (flags & 0x10000000)
- WARN("Ignoring unknown flags 0x10000000\n");
+ if (flags & semistub_flags)
+ FIXME("semi-stub behavor for flag(s) 0x%x\n", flags & semistub_flags);
if (len1 < 0) len1 = strlenW(str1);
if (len2 < 0) len2 = strlenW(str2);
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index fc071a7..d3c77d0 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -1543,7 +1543,7 @@ static const struct comparestringex_test comparestringex_tests[] = {
},
{ /* 13 */
"tr-TR", NORM_LINGUISTIC_CASING,
- {'i',0}, {0x130,0}, CSTR_LESS_THAN, -1, TRUE
+ {'i',0}, {0x130,0}, CSTR_LESS_THAN, -1, FALSE
},
{ /* 14 */
"tr-TR", NORM_LINGUISTIC_CASING,
@@ -1593,7 +1593,7 @@ static const struct comparestringex_test comparestringex_tests[] = {
},
{ /* 25 */
"tr-TR", NORM_LINGUISTIC_CASING | NORM_IGNORECASE,
- {'i',0}, {0x130,0}, CSTR_EQUAL, CSTR_LESS_THAN, TRUE
+ {'i',0}, {0x130,0}, CSTR_EQUAL, CSTR_LESS_THAN, FALSE
},
{ /* 26 */
"tr-TR", NORM_LINGUISTIC_CASING | NORM_IGNORECASE,
More information about the wine-cvs
mailing list