You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Rebase against 39797dcfb250c4b4497fa003ae67b873427daa37.
This commit is contained in:
@@ -1,27 +0,0 @@
|
||||
From 1866952edae5d4adabfc2fc32c2bde930af8cbe3 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 9 Jun 2015 06:14:49 +0200
|
||||
Subject: include: Fix definition of FILE_DISPOSITION_INFO.
|
||||
|
||||
A member called DeleteFile cannot be accessed because its defined as
|
||||
DeleteFile_must_be_suffixed_with_W_or_A_in_this_context.
|
||||
---
|
||||
include/winbase.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/winbase.h b/include/winbase.h
|
||||
index 4795d87..44ecc92 100644
|
||||
--- a/include/winbase.h
|
||||
+++ b/include/winbase.h
|
||||
@@ -860,7 +860,7 @@ typedef struct _FILE_ALLOCATION_INFO {
|
||||
} FILE_ALLOCATION_INFO, *PFILE_ALLOCATION_INFO;
|
||||
|
||||
typedef struct _FILE_DISPOSITION_INFO {
|
||||
- BOOLEAN DeleteFile;
|
||||
+ BOOLEAN DoDeleteFile;
|
||||
} FILE_DISPOSITION_INFO, *PFILE_DISPOSITION_INFO;
|
||||
|
||||
typedef struct _FILE_END_OF_FILE_INFO {
|
||||
--
|
||||
2.4.2
|
||||
|
@@ -1,145 +0,0 @@
|
||||
From 10d1d2f0b8cdb956ef4d8df5386a446c97451b19 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 26 Feb 2015 06:08:58 +0100
|
||||
Subject: kernel32: Implement SetFileInformationByHandle.
|
||||
|
||||
---
|
||||
dlls/kernel32/file.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
include/winbase.h | 1 +
|
||||
2 files changed, 102 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
|
||||
index 4695c9c..bfb2a81 100644
|
||||
--- a/dlls/kernel32/file.c
|
||||
+++ b/dlls/kernel32/file.c
|
||||
@@ -48,6 +48,22 @@
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
+C_ASSERT(sizeof(FILE_BASIC_INFO) == sizeof(FILE_BASIC_INFORMATION));
|
||||
+C_ASSERT(sizeof(FILE_STANDARD_INFO) == sizeof(FILE_STANDARD_INFORMATION));
|
||||
+C_ASSERT(sizeof(FILE_NAME_INFO) == sizeof(FILE_NAME_INFORMATION));
|
||||
+C_ASSERT(FIELD_OFFSET(FILE_RENAME_INFO, RootDirectory) == FIELD_OFFSET(FILE_RENAME_INFORMATION, RootDir));
|
||||
+C_ASSERT(sizeof(FILE_RENAME_INFO) == sizeof(FILE_RENAME_INFORMATION));
|
||||
+C_ASSERT(sizeof(FILE_DISPOSITION_INFO) == sizeof(FILE_DISPOSITION_INFORMATION));
|
||||
+C_ASSERT(sizeof(FILE_ALLOCATION_INFO) == sizeof(FILE_ALLOCATION_INFORMATION));
|
||||
+C_ASSERT(sizeof(FILE_END_OF_FILE_INFO) == sizeof(FILE_END_OF_FILE_INFORMATION));
|
||||
+C_ASSERT(sizeof(FILE_STREAM_INFO) == sizeof(FILE_STREAM_INFORMATION));
|
||||
+/* C_ASSERT(sizeof(FILE_COMPRESSION_INFO) == sizeof(FILE_COMPRESSION_INFORMATION)); */
|
||||
+C_ASSERT(sizeof(FILE_ATTRIBUTE_TAG_INFO) == sizeof(FILE_ATTRIBUTE_TAG_INFORMATION));
|
||||
+/* C_ASSERT(sizeof(FILE_ID_BOTH_DIR_INFO) == sizeof(FILE_ID_BOTH_DIR_INFORMATION)); */
|
||||
+/* C_ASSERT(sizeof(FILE_IO_PRIORITY_HINT_INFO) == sizeof(FILE_IO_PRIORITY_HINT_INFORMATION)); */
|
||||
+C_ASSERT(sizeof(FILE_FULL_DIR_INFO) == sizeof(FILE_FULL_DIR_INFORMATION));
|
||||
+/* C_ASSERT(sizeof(FILE_ALIGNMENT_INFO) == sizeof(FILE_ALIGNMENT_INFORMATION)); */
|
||||
+
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(file);
|
||||
|
||||
/* info structure for FindFirstFile handle */
|
||||
@@ -1051,7 +1067,91 @@ BOOL WINAPI SetFileCompletionNotificationModes( HANDLE file, UCHAR flags )
|
||||
|
||||
BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS class, VOID *info, DWORD size )
|
||||
{
|
||||
- FIXME("%p %u %p %u - stub\n", file, class, info, size);
|
||||
+ IO_STATUS_BLOCK io;
|
||||
+ FILE_INFORMATION_CLASS ntclass;
|
||||
+ NTSTATUS status;
|
||||
+
|
||||
+ TRACE("%p %u %p %u\n", file, class, info, size);
|
||||
+
|
||||
+ switch (class)
|
||||
+ {
|
||||
+ /* make sure that the kernel32 and NT structures are identical */
|
||||
+ case FileBasicInfo:
|
||||
+ /* FILE_BASIC_INFO matches FILE_BASIC_INFORMATION */
|
||||
+ ntclass = FileBasicInformation;
|
||||
+ break;
|
||||
+ case FileStandardInfo:
|
||||
+ /* FILE_STANDARD_INFO matches FILE_STANDARD_INFORMATION */
|
||||
+ ntclass = FileStandardInformation;
|
||||
+ break;
|
||||
+ case FileNameInfo:
|
||||
+ /* FILE_NAME_INFO matches FILE_NAME_INFORMATION */
|
||||
+ ntclass = FileNameInformation;
|
||||
+ break;
|
||||
+ case FileRenameInfo:
|
||||
+ /* FILE_RENAME_INFO matches FILE_RENAME_INFORMATION,
|
||||
+ * except BOOL <-> BOOLEAN. */
|
||||
+ ntclass = FileRenameInformation;
|
||||
+ break;
|
||||
+ case FileDispositionInfo:
|
||||
+ /* FILE_DISPOSITION_INFO matches FILE_DISPOSITION_INFORMATION,
|
||||
+ * except BOOL <-> BOOLEAN. */
|
||||
+ ntclass = FileDispositionInformation;
|
||||
+ break;
|
||||
+ case FileAllocationInfo:
|
||||
+ /* FILE_ALLOCATION_INFO matches FILE_ALLOCATION_INFORMATION */
|
||||
+ ntclass = FileAllocationInformation;
|
||||
+ break;
|
||||
+ case FileEndOfFileInfo:
|
||||
+ /* FILE_END_OF_FILE_INFO matches FILE_END_OF_FILE_INFORMATION */
|
||||
+ ntclass = FileEndOfFileInformation;
|
||||
+ break;
|
||||
+ case FileStreamInfo:
|
||||
+ /* FILE_STREAM_INFO matches FILE_STREAM_INFORMATION */
|
||||
+ ntclass = FileStreamInformation;
|
||||
+ break;
|
||||
+ case FileCompressionInfo:
|
||||
+ /* FILE_COMPRESSION_INFO matches FILE_COMPRESSION_INFORMATION */
|
||||
+ ntclass = FileCompressionInformation;
|
||||
+ break;
|
||||
+ case FileAttributeTagInfo:
|
||||
+ /* FILE_ATTRIBUTE_TAG_INFO matches FILE_ATTRIBUTE_TAG_INFORMATION */
|
||||
+ ntclass = FileAttributeTagInformation;
|
||||
+ break;
|
||||
+ case FileIdBothDirectoryInfo:
|
||||
+ /* FILE_ID_BOTH_DIR_INFO matches FILE_ID_BOTH_DIR_INFORMATION */
|
||||
+ ntclass = FileIdBothDirectoryInformation;
|
||||
+ break;
|
||||
+ case FileIoPriorityHintInfo:
|
||||
+ /* FILE_IO_PRIORITY_HINT_INFO matches FILE_IO_PRIORITY_HINT_INFORMATION */
|
||||
+ ntclass = FileIoPriorityHintInformation;
|
||||
+ break;
|
||||
+ case FileFullDirectoryInfo:
|
||||
+ /* FILE_FULL_DIR_INFO matches FILE_FULL_DIR_INFORMATION */
|
||||
+ ntclass = FileFullDirectoryInformation;
|
||||
+ break;
|
||||
+ case FileAlignmentInfo:
|
||||
+ /* FILE_ALIGNMENT_INFO matches FILE_ALIGNMENT_INFORMATION */
|
||||
+ ntclass = FileAlignmentInformation;
|
||||
+ break;
|
||||
+
|
||||
+ /* do not have a NT equivalent with same structure */
|
||||
+ case FileFullDirectoryRestartInfo:
|
||||
+ case FileIdBothDirectoryRestartInfo:
|
||||
+ case FileIdExtdDirectoryInfo:
|
||||
+ case FileIdInfo:
|
||||
+ case FileRemoteProtocolInfo:
|
||||
+ case FileStorageInfo:
|
||||
+ default:
|
||||
+ FIXME("unsupported class: %u\n", class);
|
||||
+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ status = NtSetInformationFile( file, &io, info, size, ntclass );
|
||||
+
|
||||
+ if (status == STATUS_SUCCESS) return TRUE;
|
||||
+ SetLastError( RtlNtStatusToDosError(status) );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
diff --git a/include/winbase.h b/include/winbase.h
|
||||
index 6e6da9b..0d20107 100644
|
||||
--- a/include/winbase.h
|
||||
+++ b/include/winbase.h
|
||||
@@ -2466,6 +2466,7 @@ WINBASEAPI BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD);
|
||||
WINBASEAPI BOOL WINAPI SetFileAttributesW(LPCWSTR,DWORD);
|
||||
#define SetFileAttributes WINELIB_NAME_AW(SetFileAttributes)
|
||||
WINBASEAPI BOOL WINAPI SetFileCompletionNotificationModes(HANDLE,UCHAR);
|
||||
+WINBASEAPI BOOL WINAPI SetFileInformationByHandle(HANDLE,FILE_INFO_BY_HANDLE_CLASS,LPVOID,DWORD);
|
||||
WINBASEAPI DWORD WINAPI SetFilePointer(HANDLE,LONG,LPLONG,DWORD);
|
||||
WINBASEAPI BOOL WINAPI SetFilePointerEx(HANDLE,LARGE_INTEGER,LARGE_INTEGER*,DWORD);
|
||||
WINADVAPI BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
|
||||
--
|
||||
2.4.0
|
||||
|
@@ -1,2 +0,0 @@
|
||||
Fixes: Implement SetFileInformationByHandle
|
||||
Depends: kernel32-SetFileCompletionNotificationMode
|
Reference in New Issue
Block a user