Added patch to support FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW.

This commit is contained in:
Sebastian Lackner
2014-09-13 01:43:56 +02:00
parent 4fb2477927
commit 42f18b7237
5 changed files with 70 additions and 0 deletions

View File

@@ -30,6 +30,7 @@ PATCHLIST := \
dsound-Fast_Mixer.ok \
fonts-Missing_Fonts.ok \
iphlpapi-TCP_Table.ok \
kernel32-FindFirstFile-LargeFetch.ok \
kernel32-GetFinalPathNameByHandle.ok \
kernel32-GetSystemTimes.ok \
kernel32-GetVolumePathName.ok \
@@ -342,6 +343,24 @@ iphlpapi-TCP_Table.ok:
echo '+ { "iphlpapi-TCP_Table", "Erich E. Hoover", "Implement AllocateAndGetTcpExTableFromStack." },'; \
) > iphlpapi-TCP_Table.ok
# Patchset kernel32-FindFirstFile-LargeFetch
# |
# | Included patches:
# | * Ignore FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW. [by Sebastian Lackner]
# |
# | This patchset fixes the following Wine bugs:
# | * [#35121] Support for FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW
# |
# | Modified files:
# | * dlls/kernel32/file.c, include/winbase.h
# |
.INTERMEDIATE: kernel32-FindFirstFile-LargeFetch.ok
kernel32-FindFirstFile-LargeFetch.ok:
$(call APPLY_FILE,kernel32-FindFirstFile-LargeFetch/0001-kernel32-Ignore-FIND_FIRST_EX_LARGE_FETCH-flag-in-Fi.patch)
@( \
echo '+ { "kernel32-FindFirstFile-LargeFetch", "Sebastian Lackner", "Ignore FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW." },'; \
) > kernel32-FindFirstFile-LargeFetch.ok
# Patchset kernel32-GetFinalPathNameByHandle
# |
# | Included patches:

View File

@@ -0,0 +1,41 @@
From a4e0737b05a26a85215c06c5c9fe615353540e50 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 13 Sep 2014 01:35:08 +0200
Subject: kernel32: Ignore FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW.
---
dlls/kernel32/file.c | 3 +++
include/winbase.h | 3 +++
2 files changed, 6 insertions(+)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 412659b..b277fb9 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -1859,6 +1859,9 @@ HANDLE WINAPI FindFirstFileExW( LPCWSTR filename, FINDEX_INFO_LEVELS level,
TRACE("%s %d %p %d %p %x\n", debugstr_w(filename), level, data, search_op, filter, flags);
+ /* ignore FIND_FIRST_EX_LARGE_FETCH, only a hint for performance optimization */
+ flags &= ~FIND_FIRST_EX_LARGE_FETCH;
+
if ((search_op != FindExSearchNameMatch && search_op != FindExSearchLimitToDirectories)
|| flags != 0)
{
diff --git a/include/winbase.h b/include/winbase.h
index dd5e816..edd6ad6 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -289,6 +289,9 @@ typedef enum _FINDEX_INFO_LEVELS
FindExInfoMaxInfoLevel
} FINDEX_INFO_LEVELS;
+#define FIND_FIRST_EX_CASE_SENSITIVE 1
+#define FIND_FIRST_EX_LARGE_FETCH 2
+
typedef enum _FINDEX_SEARCH_OPS
{
FindExSearchNameMatch,
--
2.1.0

View File

@@ -0,0 +1,4 @@
Author: Sebastian Lackner
Subject: Ignore FIND_FIRST_EX_LARGE_FETCH flag in FindFirstFileExW.
Revision: 1
Fixes: [35121] Support for FIND_FIRST_EX_LARGE_FETCH in FindFirstFileExW.