Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
098e71ad
Commit
098e71ad
authored
Dec 09, 2019
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kernel32: Move the CompareString functions to kernelbase.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
94a3add0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
10 additions
and
208 deletions
+10
-208
kernel32.spec
dlls/kernel32/kernel32.spec
+5
-5
locale.c
dlls/kernel32/locale.c
+0
-198
kernelbase.spec
dlls/kernelbase/kernelbase.spec
+5
-5
locale.c
dlls/kernelbase/locale.c
+0
-0
No files found.
dlls/kernel32/kernel32.spec
View file @
098e71ad
...
...
@@ -239,10 +239,10 @@
@ stdcall CommConfigDialogW(wstr long ptr)
# @ stub CompareCalendarDates
@ stdcall -import CompareFileTime(ptr ptr)
@ stdcall CompareStringA(long long str long str long)
@ stdcall CompareStringW(long long wstr long wstr long)
@ stdcall CompareStringEx(wstr long wstr long wstr long ptr ptr long)
@ stdcall -import CompareStringA(long long str long str long)
@ stdcall -import CompareStringEx(wstr long wstr long wstr long ptr ptr long)
@ stdcall -import CompareStringOrdinal(wstr long wstr long long)
@ stdcall -import CompareStringW(long long wstr long wstr long)
@ stdcall -import ConnectNamedPipe(long ptr)
@ stub ConsoleMenuControl
@ stub ConsoleSubst
...
...
@@ -502,8 +502,8 @@
@ stub FindNextVolumeMountPointA
@ stub FindNextVolumeMountPointW
@ stdcall FindNextVolumeW(long ptr long)
# @ stub FindNLSString
@ stdcall FindNLSStringEx(wstr long wstr long wstr long ptr ptr ptr long)
@ stdcall -import FindNLSString(long long wstr long wstr long ptr)
@ stdcall
-import
FindNLSStringEx(wstr long wstr long wstr long ptr ptr ptr long)
@ stdcall FindResourceA(long str str)
@ stdcall FindResourceExA(long str str long)
@ stdcall -import FindResourceExW(long wstr wstr long)
...
...
dlls/kernel32/locale.c
View file @
098e71ad
...
...
@@ -445,153 +445,6 @@ FoldStringA_exit:
return
ret
;
}
/******************************************************************************
* CompareStringW (KERNEL32.@)
*
* See CompareStringA.
*/
INT
WINAPI
CompareStringW
(
LCID
lcid
,
DWORD
flags
,
LPCWSTR
str1
,
INT
len1
,
LPCWSTR
str2
,
INT
len2
)
{
return
CompareStringEx
(
NULL
,
flags
,
str1
,
len1
,
str2
,
len2
,
NULL
,
NULL
,
0
);
}
/******************************************************************************
* CompareStringEx (KERNEL32.@)
*/
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
|
LINGUISTIC_IGNORECASE
|
0x10000000
;
/* 0x10000000 is related to diacritics in Arabic, Japanese, and Hebrew */
INT
ret
;
static
int
once
;
if
(
version
)
FIXME
(
"unexpected version parameter
\n
"
);
if
(
reserved
)
FIXME
(
"unexpected reserved value
\n
"
);
if
(
lParam
)
FIXME
(
"unexpected lParam
\n
"
);
if
(
!
str1
||
!
str2
)
{
SetLastError
(
ERROR_INVALID_PARAMETER
);
return
0
;
}
if
(
flags
&
~
(
supported_flags
|
semistub_flags
))
{
SetLastError
(
ERROR_INVALID_FLAGS
);
return
0
;
}
if
(
flags
&
semistub_flags
)
{
if
(
!
once
++
)
FIXME
(
"semi-stub behavior for flag(s) 0x%x
\n
"
,
flags
&
semistub_flags
);
}
if
(
len1
<
0
)
len1
=
strlenW
(
str1
);
if
(
len2
<
0
)
len2
=
strlenW
(
str2
);
ret
=
wine_compare_string
(
flags
,
str1
,
len1
,
str2
,
len2
);
if
(
ret
)
/* need to translate result */
return
(
ret
<
0
)
?
CSTR_LESS_THAN
:
CSTR_GREATER_THAN
;
return
CSTR_EQUAL
;
}
/******************************************************************************
* CompareStringA (KERNEL32.@)
*
* Compare two locale sensitive strings.
*
* PARAMS
* lcid [I] LCID for the comparison
* flags [I] Flags for the comparison (NORM_ constants from "winnls.h").
* str1 [I] First string to compare
* len1 [I] Length of str1, or -1 if str1 is NUL terminated
* str2 [I] Second string to compare
* len2 [I] Length of str2, or -1 if str2 is NUL terminated
*
* RETURNS
* Success: CSTR_LESS_THAN, CSTR_EQUAL or CSTR_GREATER_THAN depending on whether
* str1 is less than, equal to or greater than str2 respectively.
* Failure: FALSE. Use GetLastError() to determine the cause.
*/
INT
WINAPI
CompareStringA
(
LCID
lcid
,
DWORD
flags
,
LPCSTR
str1
,
INT
len1
,
LPCSTR
str2
,
INT
len2
)
{
WCHAR
*
buf1W
=
NtCurrentTeb
()
->
StaticUnicodeBuffer
;
WCHAR
*
buf2W
=
buf1W
+
130
;
LPWSTR
str1W
,
str2W
;
INT
len1W
=
0
,
len2W
=
0
,
ret
;
UINT
locale_cp
=
CP_ACP
;
if
(
!
str1
||
!
str2
)
{
SetLastError
(
ERROR_INVALID_PARAMETER
);
return
0
;
}
if
(
len1
<
0
)
len1
=
strlen
(
str1
);
if
(
len2
<
0
)
len2
=
strlen
(
str2
);
if
(
!
(
flags
&
LOCALE_USE_CP_ACP
))
locale_cp
=
get_lcid_codepage
(
lcid
);
if
(
len1
)
{
if
(
len1
<=
130
)
len1W
=
MultiByteToWideChar
(
locale_cp
,
0
,
str1
,
len1
,
buf1W
,
130
);
if
(
len1W
)
str1W
=
buf1W
;
else
{
len1W
=
MultiByteToWideChar
(
locale_cp
,
0
,
str1
,
len1
,
NULL
,
0
);
str1W
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len1W
*
sizeof
(
WCHAR
));
if
(
!
str1W
)
{
SetLastError
(
ERROR_NOT_ENOUGH_MEMORY
);
return
0
;
}
MultiByteToWideChar
(
locale_cp
,
0
,
str1
,
len1
,
str1W
,
len1W
);
}
}
else
{
len1W
=
0
;
str1W
=
buf1W
;
}
if
(
len2
)
{
if
(
len2
<=
130
)
len2W
=
MultiByteToWideChar
(
locale_cp
,
0
,
str2
,
len2
,
buf2W
,
130
);
if
(
len2W
)
str2W
=
buf2W
;
else
{
len2W
=
MultiByteToWideChar
(
locale_cp
,
0
,
str2
,
len2
,
NULL
,
0
);
str2W
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len2W
*
sizeof
(
WCHAR
));
if
(
!
str2W
)
{
if
(
str1W
!=
buf1W
)
HeapFree
(
GetProcessHeap
(),
0
,
str1W
);
SetLastError
(
ERROR_NOT_ENOUGH_MEMORY
);
return
0
;
}
MultiByteToWideChar
(
locale_cp
,
0
,
str2
,
len2
,
str2W
,
len2W
);
}
}
else
{
len2W
=
0
;
str2W
=
buf2W
;
}
ret
=
CompareStringEx
(
NULL
,
flags
,
str1W
,
len1W
,
str2W
,
len2W
,
NULL
,
NULL
,
0
);
if
(
str1W
!=
buf1W
)
HeapFree
(
GetProcessHeap
(),
0
,
str1W
);
if
(
str2W
!=
buf2W
)
HeapFree
(
GetProcessHeap
(),
0
,
str2W
);
return
ret
;
}
static
HANDLE
NLS_RegOpenKey
(
HANDLE
hRootKey
,
LPCWSTR
szKeyName
)
{
UNICODE_STRING
keyName
;
...
...
@@ -1900,54 +1753,3 @@ BOOL WINAPI GetFileMUIInfo(DWORD flags, PCWSTR path, FILEMUIINFO *info, DWORD *s
SetLastError
(
ERROR_CALL_NOT_IMPLEMENTED
);
return
FALSE
;
}
/******************************************************************************
* FindNLSStringEx (KERNEL32.@)
*/
INT
WINAPI
FindNLSStringEx
(
const
WCHAR
*
localename
,
DWORD
flags
,
const
WCHAR
*
src
,
INT
src_size
,
const
WCHAR
*
value
,
INT
value_size
,
INT
*
found
,
NLSVERSIONINFO
*
version_info
,
void
*
reserved
,
LPARAM
sort_handle
)
{
/* FIXME: this function should normalize strings before calling CompareStringEx() */
DWORD
mask
=
flags
;
int
offset
,
inc
,
count
;
TRACE
(
"%s %x %s %d %s %d %p %p %p %ld
\n
"
,
wine_dbgstr_w
(
localename
),
flags
,
wine_dbgstr_w
(
src
),
src_size
,
wine_dbgstr_w
(
value
),
value_size
,
found
,
version_info
,
reserved
,
sort_handle
);
if
(
version_info
!=
NULL
||
reserved
!=
NULL
||
sort_handle
!=
0
||
!
IsValidLocaleName
(
localename
)
||
src
==
NULL
||
src_size
==
0
||
src_size
<
-
1
||
value
==
NULL
||
value_size
==
0
||
value_size
<
-
1
)
{
SetLastError
(
ERROR_INVALID_PARAMETER
);
return
-
1
;
}
if
(
src_size
==
-
1
)
src_size
=
strlenW
(
src
);
if
(
value_size
==
-
1
)
value_size
=
strlenW
(
value
);
src_size
-=
value_size
;
if
(
src_size
<
0
)
return
-
1
;
mask
=
flags
&
~
(
FIND_FROMSTART
|
FIND_FROMEND
|
FIND_STARTSWITH
|
FIND_ENDSWITH
);
count
=
flags
&
(
FIND_FROMSTART
|
FIND_FROMEND
)
?
src_size
+
1
:
1
;
offset
=
flags
&
(
FIND_FROMSTART
|
FIND_STARTSWITH
)
?
0
:
src_size
;
inc
=
flags
&
(
FIND_FROMSTART
|
FIND_STARTSWITH
)
?
1
:
-
1
;
while
(
count
--
)
{
if
(
CompareStringEx
(
localename
,
mask
,
src
+
offset
,
value_size
,
value
,
value_size
,
NULL
,
NULL
,
0
)
==
CSTR_EQUAL
)
{
if
(
found
)
*
found
=
value_size
;
return
offset
;
}
offset
+=
inc
;
}
return
-
1
;
}
dlls/kernelbase/kernelbase.spec
View file @
098e71ad
...
...
@@ -153,10 +153,10 @@
# @ stub CommitStateAtom
@ stdcall CompareFileTime(ptr ptr)
# @ stub CompareObjectHandles
@ stdcall CompareStringA(long long str long str long)
kernel32.CompareStringA
@ stdcall CompareStringEx(wstr long wstr long wstr long ptr ptr long)
kernel32.CompareStringEx
@ stdcall CompareStringA(long long str long str long)
@ stdcall CompareStringEx(wstr long wstr long wstr long ptr ptr long)
@ stdcall CompareStringOrdinal(wstr long wstr long long)
@ stdcall CompareStringW(long long wstr long wstr long)
kernel32.CompareStringW
@ stdcall CompareStringW(long long wstr long wstr long)
@ stdcall ConnectNamedPipe(long ptr)
@ stdcall ContinueDebugEvent(long long long)
@ stdcall ConvertDefaultLocale(long)
...
...
@@ -362,8 +362,8 @@
@ stdcall FindFirstFreeAce(ptr ptr)
@ stdcall FindFirstStreamW(wstr long ptr long) kernel32.FindFirstStreamW
@ stdcall FindFirstVolumeW(ptr long) kernel32.FindFirstVolumeW
@ st
ub FindNLSString
@ stdcall FindNLSStringEx(wstr long wstr long wstr long ptr ptr ptr long)
kernel32.FindNLSStringEx
@ st
dcall FindNLSString(long long wstr long wstr long ptr)
@ stdcall FindNLSStringEx(wstr long wstr long wstr long ptr ptr ptr long)
@ stdcall FindNextChangeNotification(long)
@ stdcall FindNextFileA(long ptr) kernel32.FindNextFileA
# @ stub FindNextFileNameW
...
...
dlls/kernelbase/locale.c
View file @
098e71ad
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment