Rebase against 634cb775c27b61ad6ce1fbe3e9972b0edfa31dcb.

This commit is contained in:
Zebediah Figura 2020-06-15 17:43:18 -05:00
parent b6595d9e28
commit 32fcc0d75b
19 changed files with 182 additions and 461 deletions

View File

@ -1,115 +0,0 @@
From f40642800ca04184680656f05410684b5c5bf003 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 12 Jun 2020 16:43:06 -0500
Subject: [PATCH] directmanipulation: New dll
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/directmanipulation/Makefile.in | 2 +
dlls/directmanipulation/directmanip.idl | 38 +++++++++++++++++++
dlls/directmanipulation/directmanipulation.c | 12 ++++++
.../directmanipulation.spec | 4 +-
4 files changed, 54 insertions(+), 2 deletions(-)
create mode 100644 dlls/directmanipulation/directmanip.idl
diff --git a/dlls/directmanipulation/Makefile.in b/dlls/directmanipulation/Makefile.in
index d09d652b61a..331c2a84205 100644
--- a/dlls/directmanipulation/Makefile.in
+++ b/dlls/directmanipulation/Makefile.in
@@ -2,5 +2,7 @@ MODULE = directmanipulation.dll
EXTRADLLFLAGS = -mno-cygwin
+IDL_SRCS = directmanip.idl
+
C_SRCS = \
directmanipulation.c
diff --git a/dlls/directmanipulation/directmanip.idl b/dlls/directmanipulation/directmanip.idl
new file mode 100644
index 00000000000..ff00668ba5b
--- /dev/null
+++ b/dlls/directmanipulation/directmanip.idl
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2019 Alistair Leslie-Hughes
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#pragma makedep register
+
+[
+ uuid(54e211b6-3650-4f75-8334-fa359598e1c5),
+ threading(both)
+]
+coclass DirectManipulationManager
+{
+ interface IDirectManipulationManager2;
+ [default] interface IDirectManipulationManager;
+}
+
+[
+ uuid(99793286-77cc-4b57-96db-3b354f6f9fb5),
+ threading(both)
+]
+coclass DirectManipulationSharedManager
+{
+ interface IDirectManipulationManager2;
+ [default] interface IDirectManipulationManager;
+}
diff --git a/dlls/directmanipulation/directmanipulation.c b/dlls/directmanipulation/directmanipulation.c
index 21458ba1fe7..f808bc1a331 100644
--- a/dlls/directmanipulation/directmanipulation.c
+++ b/dlls/directmanipulation/directmanipulation.c
@@ -20,6 +20,8 @@
#include "windef.h"
#include "winbase.h"
+#include "oleidl.h"
+#include "rpcproxy.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(manipulation);
@@ -43,6 +45,16 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
return TRUE;
}
+HRESULT WINAPI DllRegisterServer(void)
+{
+ return __wine_register_resources( dm_instance );
+}
+
+HRESULT WINAPI DllUnregisterServer(void)
+{
+ return __wine_unregister_resources( dm_instance );
+}
+
HRESULT WINAPI DllCanUnloadNow(void)
{
return S_FALSE;
diff --git a/dlls/directmanipulation/directmanipulation.spec b/dlls/directmanipulation/directmanipulation.spec
index 6c8a107d5c7..3f0004daebe 100644
--- a/dlls/directmanipulation/directmanipulation.spec
+++ b/dlls/directmanipulation/directmanipulation.spec
@@ -2,5 +2,5 @@
@ stdcall -private DllCanUnloadNow()
@ stub DllGetActivationFactory
@ stdcall -private DllGetClassObject(ptr ptr ptr)
-@ stub DllRegisterServer()
-@ stub DllUnregisterServer()
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()
--
2.27.0

View File

@ -1,25 +0,0 @@
From 528186d14bef47f9afdbee2e323445f14191c858 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Thu, 18 Jul 2019 09:46:30 +1000
Subject: [PATCH 3/6] uuid: Add directmanipulation.h
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/uuid/uuid.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/uuid/uuid.c b/dlls/uuid/uuid.c
index aa3b30c3c7..eacb83301d 100644
--- a/dlls/uuid/uuid.c
+++ b/dlls/uuid/uuid.c
@@ -90,6 +90,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
#include "netcfgx.h"
#include "shimgdata.h"
#include "comsvcs.h"
+#include "directmanipulation.h"
/* FIXME: cguids declares GUIDs but does not define their values */
--
2.17.1

View File

@ -1,31 +1,71 @@
From 9f17f2e4f9842549820691f34f7d2da5719ead0a Mon Sep 17 00:00:00 2001
From b099458217b2855bd8615b8c97bcc2462eb74b25 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Wed, 20 Aug 2014 00:08:52 -0600
Subject: [PATCH] ntdll: Implement storing DOS attributes in
NtSetInformationFile.
---
dlls/ntdll/file.c | 54 ++++++++++++++++++++++++++---------------
dlls/ntdll/tests/file.c | 8 +++---
dlls/ntdll/unix/file.c | 54 ++++++++++++++++++++++++++---------------
include/wine/port.h | 2 ++
libs/port/xattr.c | 20 +++++++++++++++
4 files changed, 60 insertions(+), 24 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index bd6e3cbcf88..c1f9808e497 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -177,6 +177,39 @@ int fd_get_file_info( int fd, unsigned int options, struct stat *st, ULONG *attr
return ret;
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 184b7cdad59..37e5ac5d8a5 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -1364,7 +1364,7 @@ static void test_file_basic_information(void)
memset(&fbi, 0, sizeof(fbi));
res = pNtQueryInformationFile(h, &io, &fbi, sizeof fbi, FileBasicInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes\n");
- todo_wine ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM\n", fbi.FileAttributes );
+ ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM (ok in old linux without xattr)\n", fbi.FileAttributes );
/* Then HIDDEN */
memset(&fbi, 0, sizeof(fbi));
@@ -1377,7 +1377,7 @@ static void test_file_basic_information(void)
memset(&fbi, 0, sizeof(fbi));
res = pNtQueryInformationFile(h, &io, &fbi, sizeof fbi, FileBasicInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes\n");
- todo_wine ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN\n", fbi.FileAttributes );
+ ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN (ok in old linux without xattr)\n", fbi.FileAttributes );
/* Check NORMAL last of all (to make sure we can clear attributes) */
memset(&fbi, 0, sizeof(fbi));
@@ -1434,7 +1434,7 @@ static void test_file_all_information(void)
memset(&fai_buf.fai, 0, sizeof(fai_buf.fai));
res = pNtQueryInformationFile(h, &io, &fai_buf.fai, sizeof fai_buf, FileAllInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes, res %x\n", res);
- todo_wine ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM\n", fai_buf.fai.BasicInformation.FileAttributes );
+ ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM (ok in old linux without xattr)\n", fai_buf.fai.BasicInformation.FileAttributes );
/* Then HIDDEN */
memset(&fai_buf.fai.BasicInformation, 0, sizeof(fai_buf.fai.BasicInformation));
@@ -1447,7 +1447,7 @@ static void test_file_all_information(void)
memset(&fai_buf.fai, 0, sizeof(fai_buf.fai));
res = pNtQueryInformationFile(h, &io, &fai_buf.fai, sizeof fai_buf, FileAllInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes\n");
- todo_wine ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN\n", fai_buf.fai.BasicInformation.FileAttributes );
+ ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN (ok in old linux without xattr)\n", fai_buf.fai.BasicInformation.FileAttributes );
/* Check NORMAL last of all (to make sure we can clear attributes) */
memset(&fai_buf.fai.BasicInformation, 0, sizeof(fai_buf.fai.BasicInformation));
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
index 70a76ca81ee..924d06b2caa 100644
--- a/dlls/ntdll/unix/file.c
+++ b/dlls/ntdll/unix/file.c
@@ -1497,6 +1497,39 @@ static int fd_get_file_info( int fd, unsigned int options, struct stat *st, ULON
}
+/* set the stat info and file attributes for a file (by file descriptor) */
+NTSTATUS fd_set_file_info( int fd, ULONG attr )
+{
+ char hexattr[11];
+ struct stat st;
+
+ if (fstat( fd, &st ) == -1) return FILE_GetNtStatus();
+ if (fstat( fd, &st ) == -1) return errno_to_status( errno );
+ if (attr & FILE_ATTRIBUTE_READONLY)
+ {
+ if (S_ISDIR( st.st_mode))
@ -36,9 +76,9 @@ index bd6e3cbcf88..c1f9808e497 100644
+ else
+ {
+ /* add write permission only where we already have read permission */
+ st.st_mode |= (0600 | ((st.st_mode & 044) >> 1)) & (~FILE_umask);
+ st.st_mode |= (0600 | ((st.st_mode & 044) >> 1)) & (~start_umask);
+ }
+ if (fchmod( fd, st.st_mode ) == -1) return FILE_GetNtStatus();
+ if (fchmod( fd, st.st_mode ) == -1) return errno_to_status( errno );
+ attr &= ~FILE_ATTRIBUTE_NORMAL; /* do not store everything, but keep everything Samba can use */
+ if (attr != 0)
+ {
@ -52,10 +92,10 @@ index bd6e3cbcf88..c1f9808e497 100644
+ return STATUS_SUCCESS;
+}
+
/* get the stat info and file attributes for a file (by name) */
static int get_file_info( const char *path, struct stat *st, ULONG *attr )
{
char *parent_path;
@@ -3113,7 +3146,6 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
@@ -4000,7 +4033,6 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
case FileBasicInformation:
if (len >= sizeof(FILE_BASIC_INFORMATION))
{
@ -63,12 +103,12 @@ index bd6e3cbcf88..c1f9808e497 100644
const FILE_BASIC_INFORMATION *info = ptr;
LARGE_INTEGER mtime, atime;
@@ -3127,25 +3159,7 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
@@ -4014,25 +4046,7 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
io->u.Status = set_file_times( fd, &mtime, &atime );
if (io->u.Status == STATUS_SUCCESS && info->FileAttributes)
- {
- if (fstat( fd, &st ) == -1) io->u.Status = FILE_GetNtStatus();
- if (fstat( fd, &st ) == -1) io->u.Status = errno_to_status( errno );
- else
- {
- if (info->FileAttributes & FILE_ATTRIBUTE_READONLY)
@ -81,60 +121,20 @@ index bd6e3cbcf88..c1f9808e497 100644
- else
- {
- /* add write permission only where we already have read permission */
- st.st_mode |= (0600 | ((st.st_mode & 044) >> 1)) & (~FILE_umask);
- st.st_mode |= (0600 | ((st.st_mode & 044) >> 1)) & (~start_umask);
- }
- if (fchmod( fd, st.st_mode ) == -1) io->u.Status = FILE_GetNtStatus();
- if (fchmod( fd, st.st_mode ) == -1) io->u.Status = errno_to_status( errno );
- }
- }
+ io->u.Status = fd_set_file_info( fd, info->FileAttributes );
if (needs_close) close( fd );
}
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 67d54c81fb0..4c2e63d3679 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -1365,7 +1365,7 @@ static void test_file_basic_information(void)
memset(&fbi, 0, sizeof(fbi));
res = pNtQueryInformationFile(h, &io, &fbi, sizeof fbi, FileBasicInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes\n");
- todo_wine ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM\n", fbi.FileAttributes );
+ ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM (ok in old linux without xattr)\n", fbi.FileAttributes );
/* Then HIDDEN */
memset(&fbi, 0, sizeof(fbi));
@@ -1378,7 +1378,7 @@ static void test_file_basic_information(void)
memset(&fbi, 0, sizeof(fbi));
res = pNtQueryInformationFile(h, &io, &fbi, sizeof fbi, FileBasicInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes\n");
- todo_wine ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN\n", fbi.FileAttributes );
+ ok ( (fbi.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN (ok in old linux without xattr)\n", fbi.FileAttributes );
/* Check NORMAL last of all (to make sure we can clear attributes) */
memset(&fbi, 0, sizeof(fbi));
@@ -1435,7 +1435,7 @@ static void test_file_all_information(void)
memset(&fai_buf.fai, 0, sizeof(fai_buf.fai));
res = pNtQueryInformationFile(h, &io, &fai_buf.fai, sizeof fai_buf, FileAllInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes, res %x\n", res);
- todo_wine ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM\n", fai_buf.fai.BasicInformation.FileAttributes );
+ ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_SYSTEM, "attribute %x not FILE_ATTRIBUTE_SYSTEM (ok in old linux without xattr)\n", fai_buf.fai.BasicInformation.FileAttributes );
/* Then HIDDEN */
memset(&fai_buf.fai.BasicInformation, 0, sizeof(fai_buf.fai.BasicInformation));
@@ -1448,7 +1448,7 @@ static void test_file_all_information(void)
memset(&fai_buf.fai, 0, sizeof(fai_buf.fai));
res = pNtQueryInformationFile(h, &io, &fai_buf.fai, sizeof fai_buf, FileAllInformation);
ok ( res == STATUS_SUCCESS, "can't get attributes\n");
- todo_wine ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN\n", fai_buf.fai.BasicInformation.FileAttributes );
+ ok ( (fai_buf.fai.BasicInformation.FileAttributes & attrib_mask) == FILE_ATTRIBUTE_HIDDEN, "attribute %x not FILE_ATTRIBUTE_HIDDEN (ok in old linux without xattr)\n", fai_buf.fai.BasicInformation.FileAttributes );
/* Check NORMAL last of all (to make sure we can clear attributes) */
memset(&fai_buf.fai.BasicInformation, 0, sizeof(fai_buf.fai.BasicInformation));
diff --git a/include/wine/port.h b/include/wine/port.h
index 6e81cb71a76..f90396727d6 100644
index 4670891ae77..e0249b4c59f 100644
--- a/include/wine/port.h
+++ b/include/wine/port.h
@@ -368,6 +368,8 @@ extern int mkstemps(char *template, int suffix_len);
@@ -359,6 +359,8 @@ extern int mkstemps(char *template, int suffix_len);
#endif
extern int xattr_fget( int filedes, const char *name, void *value, size_t size );

View File

@ -1,23 +1,23 @@
From 08ece1e8da040d80c13348c2ffeb56052779dc53 Mon Sep 17 00:00:00 2001
From 29e0ef12afb2651e61492a8a9f021baca4c66519 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 14 Jan 2016 23:09:19 +0100
Subject: [PATCH] ntdll: Always store SAMBA_XATTR_DOS_ATTRIB when path could be
interpreted as hidden.
---
dlls/ntdll/file.c | 13 ++++++++-----
dlls/ntdll/unix/file.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index a0e54c27198..61b417ef678 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -250,12 +250,15 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr )
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
index 9636c0efe3e..444332e7baa 100644
--- a/dlls/ntdll/unix/file.c
+++ b/dlls/ntdll/unix/file.c
@@ -1561,12 +1561,15 @@ static int get_file_info( const char *path, struct stat *st, ULONG *attr )
RtlFreeHeap( GetProcessHeap(), 0, parent_path );
}
*attr |= get_file_attributes( st );
- /* convert Unix-style hidden files to a DOS hidden file attribute */
- if (DIR_is_hidden_file( path ))
- if (is_hidden_file( path ))
- *attr |= FILE_ATTRIBUTE_HIDDEN;
/* retrieve any stored DOS attributes */
len = xattr_get( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, sizeof(hexattr)-1 );
@ -25,22 +25,22 @@ index a0e54c27198..61b417ef678 100644
+ if (len == -1)
+ {
+ /* convert Unix-style hidden files to a DOS hidden file attribute */
+ if (DIR_is_hidden_file( path ))
+ if (is_hidden_file( path ))
+ *attr |= FILE_ATTRIBUTE_HIDDEN;
+ return ret;
+ }
*attr |= get_file_xattr( hexattr, len );
return ret;
}
@@ -268,7 +271,7 @@ NTSTATUS set_file_info( const char *path, ULONG attr )
@@ -3440,7 +3443,7 @@ NTSTATUS set_file_info( const char *path, ULONG attr )
/* Note: unix mode already set when called this way */
attr &= ~FILE_ATTRIBUTE_NORMAL; /* do not store everything, but keep everything Samba can use */
len = sprintf( hexattr, "0x%x", attr );
- if (attr != 0)
+ if (attr != 0 || DIR_is_hidden_file( path ))
+ if (attr != 0 || is_hidden_file( path ))
xattr_set( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, len );
else
xattr_remove( path, SAMBA_XATTR_DOS_ATTRIB );
--
2.25.1
2.27.0

View File

@ -1,7 +1,3 @@
Fixes: [9158] Support for DOS hidden/system file attributes
Fixes: [15679] cygwin symlinks not working in wine
# Depends: ntdll-Syscall_Wrappers
Depends: ntdll-Junction_Points
# Currently awkwardly split between ntdll.dll and ntdll.so; wait for the rest
# of the file functions to be moved to ntdll.so before finishing the rebase.
Disabled: true

View File

@ -1,4 +1,3 @@
# Fixes: [30397] Support for NtSetInformationFile class FileDispositionInformation
# Fixes: [30399] Support for NtSetInformationFile class FileRenameInformation
# Fixes: Support for NtSetInformationFile class FileLinkInformation
Depends: server-File_Permissions

View File

@ -2,3 +2,5 @@ Fixes: [12401] NET Framework 2.0, 3.0, 4.0 installers and other apps that make u
Fixes: [44948] Multiple apps (Spine (Mod starter for Gothic), MS Office 365 installer) need CreateSymbolicLinkW implementation
# FIXME: patch 0006 was broken by e36a9c459d. We really want to get that information from ntdll instead, but the how is not trivial...
# FIXME 2: patch 0019 needs to call RemoveDirectoryW() from kernelbase, but it's stuck in kernel32 for now...
# As with other patch sets, temporarily disabled while it's awkwardly split between ntdll.dll and ntdll.so.
Disabled: true

View File

@ -1,3 +1,5 @@
Fixes: Improve stub for NtQueryEaFile
# Depends: ntdll-Syscall_Wrappers
Depends: ntdll-Junction_Points
# Re-enable me when ntdll-Junction_Points gets re-enabled!
Disabled: true

View File

@ -1,4 +1,4 @@
From 74831302b4eedd6df46357de283392f2b4ee62f2 Mon Sep 17 00:00:00 2001
From d389571ffefb1cabd3b23d1c966dbc237d042e87 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Mon, 30 Dec 2019 13:27:53 +0300
Subject: [PATCH] ntdll: Support x86_64 syscall emulation.
@ -194,7 +194,7 @@ index 1d1b879310e..c8a8d1d1d33 100644
error:
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
index e1da90222d3..91e1596ddcb 100644
index 0bffa4029c1..03dc27b083c 100644
--- a/dlls/ntdll/unix/thread.c
+++ b/dlls/ntdll/unix/thread.c
@@ -58,6 +58,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(seh);
@ -227,7 +227,7 @@ index e1da90222d3..91e1596ddcb 100644
teb = virtual_alloc_first_teb();
teb->WOW32Reserved = syscall_handler;
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 62e836b41f1..f234a756991 100644
index b7b66b6b440..23c434dd7aa 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -111,7 +111,8 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE
@ -240,7 +240,7 @@ index 62e836b41f1..f234a756991 100644
extern void CDECL DECLSPEC_NORETURN exit_thread( int status ) DECLSPEC_HIDDEN;
extern void CDECL DECLSPEC_NORETURN exit_process( int status ) DECLSPEC_HIDDEN;
extern NTSTATUS CDECL get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_len ) DECLSPEC_HIDDEN;
@@ -150,6 +151,9 @@ extern char **build_envp( const WCHAR *envW ) DECLSPEC_HIDDEN;
@@ -147,6 +148,9 @@ extern char **build_envp( const WCHAR *envW ) DECLSPEC_HIDDEN;
extern NTSTATUS exec_wineloader( char **argv, int socketfd, int is_child_64bit,
ULONGLONG res_start, ULONGLONG res_end ) DECLSPEC_HIDDEN;
@ -251,19 +251,19 @@ index 62e836b41f1..f234a756991 100644
extern void server_enter_uninterrupted_section( RTL_CRITICAL_SECTION *cs, sigset_t *sigset ) DECLSPEC_HIDDEN;
extern void server_leave_uninterrupted_section( RTL_CRITICAL_SECTION *cs, sigset_t *sigset ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index c6fb8e0f2d4..5d00991cde9 100644
index dae93ab1632..5103e50d7ff 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -28,7 +28,7 @@ struct ldt_copy;
struct msghdr;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 45
+#define NTDLL_UNIXLIB_VERSION 46
-#define NTDLL_UNIXLIB_VERSION 48
+#define NTDLL_UNIXLIB_VERSION 49
struct unix_funcs
{
@@ -225,7 +225,8 @@ struct unix_funcs
@@ -253,7 +253,8 @@ struct unix_funcs
/* thread/process functions */
TEB * (CDECL *init_threading)( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size,

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "948a6a47b8dbd0ddd86cad04de03f0e4ba81b65d"
echo "634cb775c27b61ad6ce1fbe3e9972b0edfa31dcb"
}
# Show version information
@ -167,6 +167,7 @@ patch_enable_all ()
enable_ntdll_ApiSetMap="$1"
enable_ntdll_Builtin_Prot="$1"
enable_ntdll_CriticalSection="$1"
enable_ntdll_DOS_Attributes="$1"
enable_ntdll_Dealloc_Thread_Stack="$1"
enable_ntdll_DeviceType_Systemroot="$1"
enable_ntdll_Exception="$1"
@ -179,11 +180,9 @@ patch_enable_all ()
enable_ntdll_Heap_Improvements="$1"
enable_ntdll_Hide_Wine_Exports="$1"
enable_ntdll_Interrupt_0x2e="$1"
enable_ntdll_Junction_Points="$1"
enable_ntdll_Manifest_Range="$1"
enable_ntdll_NtAccessCheck="$1"
enable_ntdll_NtDevicePath="$1"
enable_ntdll_NtQueryEaFile="$1"
enable_ntdll_NtQuerySection="$1"
enable_ntdll_NtSetLdtEntries="$1"
enable_ntdll_Pipe_SpecialCharacters="$1"
@ -226,7 +225,6 @@ patch_enable_all ()
enable_riched20_IText_Interface="$1"
enable_server_Desktop_Refcount="$1"
enable_server_FileEndOfFileInformation="$1"
enable_server_File_Permissions="$1"
enable_server_Key_State="$1"
enable_server_Object_Types="$1"
enable_server_PeekMessage="$1"
@ -596,6 +594,9 @@ patch_enable ()
ntdll-CriticalSection)
enable_ntdll_CriticalSection="$2"
;;
ntdll-DOS_Attributes)
enable_ntdll_DOS_Attributes="$2"
;;
ntdll-Dealloc_Thread_Stack)
enable_ntdll_Dealloc_Thread_Stack="$2"
;;
@ -632,9 +633,6 @@ patch_enable ()
ntdll-Interrupt-0x2e)
enable_ntdll_Interrupt_0x2e="$2"
;;
ntdll-Junction_Points)
enable_ntdll_Junction_Points="$2"
;;
ntdll-Manifest_Range)
enable_ntdll_Manifest_Range="$2"
;;
@ -644,9 +642,6 @@ patch_enable ()
ntdll-NtDevicePath)
enable_ntdll_NtDevicePath="$2"
;;
ntdll-NtQueryEaFile)
enable_ntdll_NtQueryEaFile="$2"
;;
ntdll-NtQuerySection)
enable_ntdll_NtQuerySection="$2"
;;
@ -773,9 +768,6 @@ patch_enable ()
server-FileEndOfFileInformation)
enable_server_FileEndOfFileInformation="$2"
;;
server-File_Permissions)
enable_server_File_Permissions="$2"
;;
server-Key_State)
enable_server_Key_State="$2"
;;
@ -1649,13 +1641,6 @@ if test "$enable_winebuild_Fake_Dlls" -eq 1; then
enable_ws2_32_WSACleanup=1
fi
if test "$enable_ntdll_NtQueryEaFile" -eq 1; then
if test "$enable_ntdll_Junction_Points" -gt 1; then
abort "Patchset ntdll-Junction_Points disabled, but ntdll-NtQueryEaFile depends on that."
fi
enable_ntdll_Junction_Points=1
fi
if test "$enable_ntdll_NtDevicePath" -eq 1; then
if test "$enable_ntdll_Pipe_SpecialCharacters" -gt 1; then
abort "Patchset ntdll-Pipe_SpecialCharacters disabled, but ntdll-NtDevicePath depends on that."
@ -1702,20 +1687,6 @@ if test "$enable_kernel32_CopyFileEx" -eq 1; then
enable_ntdll_FileDispositionInformation=1
fi
if test "$enable_ntdll_FileDispositionInformation" -eq 1; then
if test "$enable_server_File_Permissions" -gt 1; then
abort "Patchset server-File_Permissions disabled, but ntdll-FileDispositionInformation depends on that."
fi
enable_server_File_Permissions=1
fi
if test "$enable_server_File_Permissions" -eq 1; then
if test "$enable_ntdll_Junction_Points" -gt 1; then
abort "Patchset ntdll-Junction_Points disabled, but server-File_Permissions depends on that."
fi
enable_ntdll_Junction_Points=1
fi
if test "$enable_dxdiagn_GetChildContainer_Leaf_Nodes" -eq 1; then
if test "$enable_dxdiagn_Enumerate_DirectSound" -gt 1; then
abort "Patchset dxdiagn-Enumerate_DirectSound disabled, but dxdiagn-GetChildContainer_Leaf_Nodes depends on that."
@ -2715,12 +2686,10 @@ fi
# |
# | Modified files:
# | * configure, configure.ac, dlls/directmanipulation/Makefile.in, dlls/directmanipulation/directmanip.idl,
# | dlls/directmanipulation/directmanipulation.c, dlls/directmanipulation/directmanipulation.spec,
# | dlls/directmanipulation/tests/Makefile.in, dlls/directmanipulation/tests/manipulation.c, dlls/uuid/uuid.c
# | dlls/directmanipulation/directmanipulation.c, dlls/directmanipulation/tests/Makefile.in,
# | dlls/directmanipulation/tests/manipulation.c
# |
if test "$enable_directmanipulation_new_dll" -eq 1; then
patch_apply directmanipulation-new-dll/0002-directmanipulation-New-dll.patch
patch_apply directmanipulation-new-dll/0003-uuid-Add-directmanipulation.h.patch
patch_apply directmanipulation-new-dll/0004-directmanipulation-Create-DirectManipulationManager-.patch
patch_apply directmanipulation-new-dll/0006-directmanipulation-Support-DCompManipulationComposit.patch
patch_apply directmanipulation-new-dll/0007-directmanipulation-Supprot-IDirectManipulationFrameI.patch
@ -2733,8 +2702,6 @@ if test "$enable_directmanipulation_new_dll" -eq 1; then
patch_apply directmanipulation-new-dll/0016-directmanipulation-Support-IDirectManipulationConten.patch
patch_apply directmanipulation-new-dll/0017-directmanipulation-Fake-success-in-some-functions.patch
(
printf '%s\n' '+ { "Alistair Leslie-Hughes", "directmanipulation: New dll.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "uuid: Add directmanipulation.h.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "directmanipulation: Create DirectManipulationManager/DirectManipulationSharedManager objects.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "directmanipulation: Support DCompManipulationCompositor interface.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "directmanipulation: Supprot IDirectManipulationFrameInfoProvider interface in IDirectManipulationCompositor.", 1 },';
@ -3168,95 +3135,8 @@ if test "$enable_iphlpapi_System_Ping" -eq 1; then
) >> "$patchlist"
fi
# Patchset ntdll-Junction_Points
# |
# | This patchset fixes the following Wine bugs:
# | * [#12401] NET Framework 2.0, 3.0, 4.0 installers and other apps that make use of GAC API for managed assembly
# | installation on NTFS filesystems need reparse point/junction API support
# | (FSCTL_SET_REPARSE_POINT/FSCTL_GET_REPARSE_POINT)
# | * [#44948] Multiple apps (Spine (Mod starter for Gothic), MS Office 365 installer) need CreateSymbolicLinkW implementation
# |
# | Modified files:
# | * configure.ac, dlls/kernel32/path.c, dlls/ntdll/file.c, dlls/ntdll/tests/file.c, dlls/ntdll/unix/file.c,
# | include/Makefile.in, include/ntifs.h, include/wine/port.h, include/winternl.h, libs/port/Makefile.in,
# | libs/port/renameat2.c, server/fd.c
# |
if test "$enable_ntdll_Junction_Points" -eq 1; then
patch_apply ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch
patch_apply ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-junction-points.patch
patch_apply ntdll-Junction_Points/0003-ntdll-Add-support-for-deleting-junction-points.patch
patch_apply ntdll-Junction_Points/0004-ntdll-Add-a-test-for-junction-point-advertisement.patch
patch_apply ntdll-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch
patch_apply ntdll-Junction_Points/0007-ntdll-Add-support-for-absolute-symlink-creation.patch
patch_apply ntdll-Junction_Points/0008-ntdll-Add-support-for-reading-absolute-symlinks.patch
patch_apply ntdll-Junction_Points/0009-ntdll-Add-support-for-deleting-symlinks.patch
patch_apply ntdll-Junction_Points/0010-ntdll-Add-support-for-relative-symlink-creation.patch
patch_apply ntdll-Junction_Points/0011-ntdll-Add-support-for-reading-relative-symlinks.patch
patch_apply ntdll-Junction_Points/0012-ntdll-Add-support-for-file-symlinks.patch
patch_apply ntdll-Junction_Points/0013-ntdll-Allow-creation-of-dangling-reparse-points-to-n.patch
patch_apply ntdll-Junction_Points/0014-ntdll-Correctly-report-file-symbolic-links-as-files.patch
patch_apply ntdll-Junction_Points/0015-kernel32-Set-error-code-when-attempting-to-delete-fi.patch
patch_apply ntdll-Junction_Points/0016-server-Properly-handle-file-symlink-deletion.patch
patch_apply ntdll-Junction_Points/0017-ntdll-Always-report-symbolic-links-as-containing-zer.patch
patch_apply ntdll-Junction_Points/0018-ntdll-Find-dangling-symlinks-quickly.patch
(
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for junction point creation.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for reading junction points.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for deleting junction points.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add a test for junction point advertisement.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "kernel32,ntdll: Add support for deleting junction points with RemoveDirectory.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for absolute symlink creation.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for reading absolute symlinks.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for deleting symlinks.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for relative symlink creation.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for reading relative symlinks.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Add support for file symlinks.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Allow creation of dangling reparse points to non-existent paths.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Correctly report file symbolic links as files.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "kernel32: Set error code when attempting to delete file symlinks as directories.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "server: Properly handle file symlink deletion.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Always report symbolic links as containing zero bytes.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Find dangling symlinks quickly.", 1 },';
) >> "$patchlist"
fi
# Patchset server-File_Permissions
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-Junction_Points
# |
# | This patchset fixes the following Wine bugs:
# | * [#44691] Improve mapping of DACL to file permissions
# |
# | Modified files:
# | * dlls/advapi32/tests/security.c, dlls/ntdll/tests/file.c, server/fd.c, server/file.c
# |
if test "$enable_server_File_Permissions" -eq 1; then
patch_apply server-File_Permissions/0001-server-Improve-STATUS_CANNOT_DELETE-checks-for-direc.patch
patch_apply server-File_Permissions/0002-server-Allow-to-open-files-without-any-permission-bi.patch
patch_apply server-File_Permissions/0003-server-When-creating-new-directories-temporarily-giv.patch
patch_apply server-File_Permissions/0004-advapi32-tests-Add-tests-for-ACL-inheritance-in-Crea.patch
patch_apply server-File_Permissions/0005-advapi32-tests-Add-ACL-inheritance-tests-for-creatin.patch
patch_apply server-File_Permissions/0006-ntdll-tests-Added-tests-for-open-behaviour-on-readon.patch
patch_apply server-File_Permissions/0007-server-FILE_WRITE_ATTRIBUTES-should-succeed-for-read.patch
patch_apply server-File_Permissions/0008-server-Improve-mapping-of-DACL-to-file-permissions.patch
(
printf '%s\n' '+ { "Sebastian Lackner", "server: Improve STATUS_CANNOT_DELETE checks for directory case.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "server: Allow to open files without any permission bits.", 2 },';
printf '%s\n' '+ { "Sebastian Lackner", "server: When creating new directories temporarily give read-permissions until they are opened.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "advapi32/tests: Add tests for ACL inheritance in CreateDirectoryA.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "advapi32/tests: Add ACL inheritance tests for creating subdirectories with NtCreateFile.", 1 },';
printf '%s\n' '+ { "Qian Hong", "ntdll/tests: Added tests for open behaviour on readonly files.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "server: FILE_WRITE_ATTRIBUTES should succeed for readonly files.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "server: Improve mapping of DACL to file permissions.", 1 },';
) >> "$patchlist"
fi
# Patchset ntdll-FileDispositionInformation
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-Junction_Points, server-File_Permissions
# |
# | Modified files:
# | * dlls/ntdll/tests/file.c, server/fd.c
# |
@ -3272,7 +3152,7 @@ fi
# Patchset kernel32-CopyFileEx
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-Junction_Points, server-File_Permissions, ntdll-FileDispositionInformation
# | * ntdll-FileDispositionInformation
# |
# | This patchset fixes the following Wine bugs:
# | * [#22692] Add support for CopyFileEx progress callback
@ -3682,6 +3562,35 @@ if test "$enable_ntdll_CriticalSection" -eq 1; then
) >> "$patchlist"
fi
# Patchset ntdll-DOS_Attributes
# |
# | This patchset fixes the following Wine bugs:
# | * [#9158] Support for DOS hidden/system file attributes
# | * [#15679] cygwin symlinks not working in wine
# |
# | Modified files:
# | * configure.ac, dlls/ntdll/tests/directory.c, dlls/ntdll/tests/file.c, dlls/ntdll/unix/file.c, include/wine/port.h,
# | libs/port/Makefile.in, libs/port/xattr.c
# |
if test "$enable_ntdll_DOS_Attributes" -eq 1; then
patch_apply ntdll-DOS_Attributes/0001-ntdll-Implement-retrieving-DOS-attributes-in-fd_-get.patch
patch_apply ntdll-DOS_Attributes/0003-ntdll-Implement-storing-DOS-attributes-in-NtSetInfor.patch
patch_apply ntdll-DOS_Attributes/0004-ntdll-Implement-storing-DOS-attributes-in-NtCreateFi.patch
patch_apply ntdll-DOS_Attributes/0005-libport-Add-support-for-Mac-OS-X-style-extended-attr.patch
patch_apply ntdll-DOS_Attributes/0006-libport-Add-support-for-FreeBSD-style-extended-attri.patch
patch_apply ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch
patch_apply ntdll-DOS_Attributes/0008-ntdll-Always-store-SAMBA_XATTR_DOS_ATTRIB-when-path-.patch
(
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Implement retrieving DOS attributes in [fd_]get_file_info().", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Implement storing DOS attributes in NtSetInformationFile.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Implement storing DOS attributes in NtCreateFile.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "libport: Add support for Mac OS X style extended attributes.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "libport: Add support for FreeBSD style extended attributes.", 1 },';
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Perform the Unix-style hidden file check within the unified file info grabbing routine.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Always store SAMBA_XATTR_DOS_ATTRIB when path could be interpreted as hidden.", 1 },';
) >> "$patchlist"
fi
# Patchset ntdll-Dealloc_Thread_Stack
# |
# | Modified files:
@ -3928,21 +3837,6 @@ if test "$enable_ntdll_NtDevicePath" -eq 1; then
) >> "$patchlist"
fi
# Patchset ntdll-NtQueryEaFile
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-Junction_Points
# |
# | Modified files:
# | * dlls/ntdll/file.c, dlls/ntdll/tests/file.c
# |
if test "$enable_ntdll_NtQueryEaFile" -eq 1; then
patch_apply ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch
(
printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Improve stub of NtQueryEaFile.", 1 },';
) >> "$patchlist"
fi
# Patchset ntdll-NtQuerySection
# |
# | Modified files:
@ -4595,7 +4489,7 @@ fi
# Patchset server-FileEndOfFileInformation
# |
# | Modified files:
# | * dlls/ntdll/file.c, server/fd.c, server/protocol.def
# | * dlls/ntdll/unix/file.c, server/fd.c, server/protocol.def
# |
if test "$enable_server_FileEndOfFileInformation" -eq 1; then
patch_apply server-FileEndOfFileInformation/0001-ntdll-Set-EOF-on-file-which-has-a-memory-mapping-sho.patch
@ -4786,8 +4680,7 @@ fi
# Patchset shell32-Progress_Dialog
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-Junction_Points, server-File_Permissions, ntdll-FileDispositionInformation, kernel32-CopyFileEx,
# | shell32-SHFileOperation_Move
# | * ntdll-FileDispositionInformation, kernel32-CopyFileEx, shell32-SHFileOperation_Move
# |
# | Modified files:
# | * dlls/shell32/shell32.rc, dlls/shell32/shlfileop.c, dlls/shell32/shresdef.h
@ -4808,8 +4701,7 @@ fi
# Patchset shell32-ACE_Viewer
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-Junction_Points, server-File_Permissions, ntdll-FileDispositionInformation, kernel32-CopyFileEx,
# | shell32-SHFileOperation_Move, shell32-Progress_Dialog
# | * ntdll-FileDispositionInformation, kernel32-CopyFileEx, shell32-SHFileOperation_Move, shell32-Progress_Dialog
# |
# | Modified files:
# | * dlls/aclui/Makefile.in, dlls/aclui/aclui.rc, dlls/aclui/aclui_main.c, dlls/aclui/resource.h, dlls/aclui/user_icons.bmp,
@ -6509,7 +6401,7 @@ fi
# | dlls/xactengine3_7/Makefile.in, dlls/xactengine3_7/xactengine3_7.spec, dlls/xaudio2_7/Makefile.in,
# | dlls/xaudio2_7/tests/Makefile.in, dlls/xaudio2_7/tests/globals.xgs, dlls/xaudio2_7/tests/rsrc.rc,
# | dlls/xaudio2_7/tests/xact.c, dlls/xaudio2_7/tests/xaudio2.c, dlls/xaudio2_7/xact_classes.idl, dlls/xaudio2_7/xact_dll.c,
# | include/Makefile.in, include/xact3.idl, include/xact3wb.h
# | include/Makefile.in, include/xact3.idl
# |
if test "$enable_xactengine_initial" -eq 1; then
patch_apply xactengine-initial/0001-include-Add-xact3.idl.patch
@ -6527,7 +6419,6 @@ if test "$enable_xactengine_initial" -eq 1; then
patch_apply xactengine-initial/0014-include-Add-XACTENGINE_-error-codes.patch
patch_apply xactengine-initial/0015-include-Add-XACT-defines.patch
patch_apply xactengine-initial/0016-xaudio2_7-tests-Add-more-tests.patch
patch_apply xactengine-initial/0017-include-Correct-the-name-of-WAVEBANKMINIWAVEFORMAT.patch
(
printf '%s\n' '+ { "Ethan Lee", "include: Add xact3.idl.", 1 },';
printf '%s\n' '+ { "Ethan Lee", "xaudio2: Add support for xactengine3.", 1 },';
@ -6544,7 +6435,6 @@ if test "$enable_xactengine_initial" -eq 1; then
printf '%s\n' '+ { "Alistair Leslie-Hughes", "include: Add XACTENGINE_* error codes.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "include: Add XACT defines.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "xaudio2_7/tests: Add more tests.", 1 },';
printf '%s\n' '+ { "Zebediah Figura", "include: Correct the name of WAVEBANKMINIWAVEFORMAT.", 1 },';
) >> "$patchlist"
fi

View File

@ -1,27 +1,27 @@
From ed63a76dc481da8af510fb8f9ae6c399ca0ca0ac Mon Sep 17 00:00:00 2001
From b956b7f35f07153aa61a9a57a1b5bb7f2f9d1e8b Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Fri, 21 Aug 2015 21:58:51 +0800
Subject: [PATCH] ntdll: Set EOF on file which has a memory mapping should
fail.
---
dlls/ntdll/file.c | 27 ++++++----------------
server/fd.c | 55 +++++++++++++++++++++++++++++++++++++++++++++
server/protocol.def | 7 ++++++
3 files changed, 69 insertions(+), 20 deletions(-)
dlls/ntdll/unix/file.c | 23 ++++--------------
server/fd.c | 55 ++++++++++++++++++++++++++++++++++++++++++
server/protocol.def | 7 ++++++
3 files changed, 67 insertions(+), 18 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 013706889bb..a28ae265687 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -2747,30 +2747,17 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
index d39ca8cd635..b0ec1ff3f5f 100644
--- a/dlls/ntdll/unix/file.c
+++ b/dlls/ntdll/unix/file.c
@@ -4038,28 +4038,15 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
case FileEndOfFileInformation:
if (len >= sizeof(FILE_END_OF_FILE_INFORMATION))
{
- struct stat st;
const FILE_END_OF_FILE_INFORMATION *info = ptr;
- if ((io->u.Status = unix_funcs->server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )))
- if ((io->u.Status = server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL )))
- return io->u.Status;
-
- /* first try normal truncate */
@ -41,22 +41,18 @@ index 013706889bb..a28ae265687 100644
+ req->eof = info->EndOfFile.QuadPart;
+ io->u.Status = wine_server_call( req );
}
- io->u.Status = FILE_GetNtStatus();
- io->u.Status = errno_to_status( errno );
-
- if (needs_close) close( fd );
- }
- else io->u.Status = STATUS_INVALID_PARAMETER_3;
+ SERVER_END_REQ;
+ } else
+ io->u.Status = STATUS_INVALID_PARAMETER_3;
}
else io->u.Status = STATUS_INVALID_PARAMETER_3;
break;
case FilePipeInformation:
diff --git a/server/fd.c b/server/fd.c
index 06d1d81bdb0..7b016acb382 100644
index 7ea8ac273e5..3a92ca5fd48 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -2534,6 +2534,50 @@ failed:
@@ -2574,6 +2574,50 @@ failed:
free( name );
}
@ -107,7 +103,7 @@ index 06d1d81bdb0..7b016acb382 100644
struct completion *fd_get_completion( struct fd *fd, apc_param_t *p_key )
{
*p_key = fd->comp_key;
@@ -2812,3 +2856,14 @@ DECL_HANDLER(set_fd_name_info)
@@ -2852,3 +2896,14 @@ DECL_HANDLER(set_fd_name_info)
}
if (root_fd) release_object( root_fd );
}
@ -123,10 +119,10 @@ index 06d1d81bdb0..7b016acb382 100644
+ }
+}
diff --git a/server/protocol.def b/server/protocol.def
index 423e6079009..c6110fc675e 100644
index c3442c06e9b..80ca76f9271 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3821,6 +3821,13 @@ struct handle_info
@@ -3822,6 +3822,13 @@ struct handle_info
@END
@ -141,5 +137,5 @@ index 423e6079009..c6110fc675e 100644
@REQ(get_window_layered_info)
user_handle_t handle; /* handle to the window */
--
2.26.2
2.27.0

View File

@ -1,3 +1,5 @@
Fixes: Allow to open files/directories without any access rights in order to query attributes
Fixes: [44691] Improve mapping of DACL to file permissions
Depends: ntdll-Junction_Points
# Re-enable me when ntdll-Junction_Points gets re-enabled!
Disabled: true

View File

@ -1,4 +1,4 @@
Depends: server-Stored_ACLs
Fixes: Support for inherited file ACLs
# Re-enable me when ntdll-DOS_Attributes gets re-enabled!
# Re-enable me when ntdll-Junction_Points gets re-enabled!
Disabled: true

View File

@ -1,5 +1,5 @@
Depends: ntdll-DOS_Attributes
Depends: server-File_Permissions
Fixes: [33576] Support for stored file ACLs
# Re-enable me when ntdll-DOS_Attributes gets re-enabled!
# Re-enable me when ntdll-Junction_Points gets re-enabled!
Disabled: true

View File

@ -1,4 +1,4 @@
From 607a86f034677449a7fa4628ec2df013b65bfa90 Mon Sep 17 00:00:00 2001
From 7e13aba360d1dd4d5a09f5b9a624dfa4e61d3ddf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 11 May 2017 05:32:55 +0200
Subject: [PATCH] winebuild: Generate syscall thunks for ntdll exports.
@ -22,7 +22,7 @@ Based on a patch by Erich E. Hoover.
14 files changed, 221 insertions(+), 32 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index c2e65c94abc..0f9fe76e9af 100644
index a09c17e3b50..d22fd0141c0 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3812,6 +3812,7 @@ PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule)
@ -106,7 +106,7 @@ index 5a6809638ae..c6988ce08e3 100644
peb = teb->Peb;
peb->FastPebLock = &peb_lock;
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
index 97b191e1a5b..2dbaa43e731 100644
index 0470f5eaa8a..55afc1748ef 100644
--- a/dlls/ntdll/unix/thread.c
+++ b/dlls/ntdll/unix/thread.c
@@ -85,7 +85,7 @@ static void pthread_exit_wrapper( int status )
@ -127,7 +127,7 @@ index 97b191e1a5b..2dbaa43e731 100644
thread_data->request_fd = -1;
thread_data->reply_fd = -1;
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index abedfc316ae..62d0c115026 100644
index 0d1d0e5025f..ac792801283 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -111,7 +111,7 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE
@ -140,19 +140,19 @@ index abedfc316ae..62d0c115026 100644
extern void CDECL DECLSPEC_NORETURN exit_process( int status ) DECLSPEC_HIDDEN;
extern NTSTATUS CDECL get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_len ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 873cc7abdf2..c6fb8e0f2d4 100644
index dd5c3e3784e..dae93ab1632 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -28,7 +28,7 @@ struct ldt_copy;
struct msghdr;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 44
+#define NTDLL_UNIXLIB_VERSION 45
-#define NTDLL_UNIXLIB_VERSION 47
+#define NTDLL_UNIXLIB_VERSION 48
struct unix_funcs
{
@@ -225,7 +225,7 @@ struct unix_funcs
@@ -253,7 +253,7 @@ struct unix_funcs
/* thread/process functions */
TEB * (CDECL *init_threading)( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size,

View File

@ -1,4 +1,4 @@
From 6f1973aa2aee35139ae041e59d37a45ff22dc5bf Mon Sep 17 00:00:00 2001
From b37d55d71b294fb96cb4816f2cb3f2448731e115 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 7 Sep 2017 00:38:09 +0200
Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
@ -15,10 +15,10 @@ Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
8 files changed, 305 insertions(+), 14 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index 1f525194ce73..21af7b4ce7a4 100644
index 95939ba6bde..ae5462f6e55 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -1574,7 +1574,7 @@ static void test_filenames(void)
@@ -1573,7 +1573,7 @@ static void test_filenames(void)
static void test_FakeDLL(void)
{
@ -27,7 +27,7 @@ index 1f525194ce73..21af7b4ce7a4 100644
NTSTATUS (WINAPI *pNtSetEvent)(HANDLE, ULONG *) = NULL;
IMAGE_EXPORT_DIRECTORY *dir;
HMODULE module = GetModuleHandleA("ntdll.dll");
@@ -1616,8 +1616,13 @@ static void test_FakeDLL(void)
@@ -1615,8 +1615,13 @@ static void test_FakeDLL(void)
dll_func = (BYTE *)GetProcAddress(module, func_name);
ok(dll_func != NULL, "%s: GetProcAddress returned NULL\n", func_name);
@ -42,7 +42,7 @@ index 1f525194ce73..21af7b4ce7a4 100644
todo_wine ok(0, "%s: Export is a stub-function, skipping\n", func_name);
continue;
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
index 2dbaa43e731a..e1da90222d38 100644
index 55afc1748ef..0bffa4029c1 100644
--- a/dlls/ntdll/unix/thread.c
+++ b/dlls/ntdll/unix/thread.c
@@ -110,7 +110,7 @@ TEB * CDECL init_threading( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZ
@ -51,14 +51,14 @@ index 2dbaa43e731a..e1da90222d38 100644
info_size = server_init_thread( teb->Peb, suspend );
- virtual_map_user_shared_data();
+ virtual_map_user_shared_data(syscall_handler);
init_files();
NtCreateKeyedEvent( &keyed_event, GENERIC_READ | GENERIC_WRITE, NULL, 0 );
if (size) *size = info_size;
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 33a551e947c2..d06f366d3c6d 100644
index ac792801283..b7b66b6b440 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -153,7 +153,7 @@ extern void virtual_init(void) DECLSPEC_HIDDEN;
@@ -176,7 +176,7 @@ extern void virtual_init(void) DECLSPEC_HIDDEN;
extern TEB *virtual_alloc_first_teb(void) DECLSPEC_HIDDEN;
extern NTSTATUS virtual_alloc_teb( TEB **ret_teb ) DECLSPEC_HIDDEN;
extern void virtual_free_teb( TEB *teb ) DECLSPEC_HIDDEN;
@ -68,10 +68,10 @@ index 33a551e947c2..d06f366d3c6d 100644
extern BOOL virtual_is_valid_code_address( const void *addr, SIZE_T size ) DECLSPEC_HIDDEN;
extern int virtual_handle_stack_fault( void *addr ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 9fb2ecd38ca3..ad11485d1cea 100644
index b656a62c154..9b415fe5058 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -2772,14 +2772,14 @@ TEB *virtual_alloc_first_teb(void)
@@ -2588,14 +2588,14 @@ TEB *virtual_alloc_first_teb(void)
TEB *teb;
PEB *peb;
NTSTATUS status;
@ -88,7 +88,7 @@ index 9fb2ecd38ca3..ad11485d1cea 100644
if (status)
{
ERR( "wine: failed to map the shared user data: %08x\n", status );
@@ -2977,7 +2977,7 @@ void virtual_clear_thread_stack( void *stack_end )
@@ -2791,7 +2791,7 @@ void virtual_clear_thread_stack( void *stack_end )
/***********************************************************************
* virtual_map_user_shared_data
*/
@ -97,7 +97,7 @@ index 9fb2ecd38ca3..ad11485d1cea 100644
{
static const WCHAR wine_usdW[] = {'\\','K','e','r','n','e','l','O','b','j','e','c','t','s',
'\\','_','_','w','i','n','e','_','u','s','e','r','_','s','h','a','r','e','d','_','d','a','t','a',0};
@@ -3000,6 +3000,11 @@ void virtual_map_user_shared_data(void)
@@ -2814,6 +2814,11 @@ void virtual_map_user_shared_data(void)
ERR( "failed to remap the process USD: %d\n", res );
exit(1);
}
@ -110,7 +110,7 @@ index 9fb2ecd38ca3..ad11485d1cea 100644
NtClose( section );
}
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 4597a6cb3243..3d0d75e9c6d3 100644
index 4597a6cb324..3d0d75e9c6d 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -398,7 +398,11 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr )
@ -126,7 +126,7 @@ index 4597a6cb3243..3d0d75e9c6d3 100644
sec++;
diff --git a/server/mapping.c b/server/mapping.c
index 0941dd87c05d..002f3215af2e 100644
index 0941dd87c05..002f3215af2 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -964,7 +964,11 @@ struct object *create_user_data_mapping( struct object *root, const struct unico
@ -143,7 +143,7 @@ index 0941dd87c05d..002f3215af2e 100644
}
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index 74216f8bb6e7..820516329a47 100644
index 74216f8bb6e..820516329a4 100644
--- a/tools/winebuild/parser.c
+++ b/tools/winebuild/parser.c
@@ -545,7 +545,7 @@ static const char *parse_spec_flags( DLLSPEC *spec, ORDDEF *odp )
@ -156,7 +156,7 @@ index 74216f8bb6e7..820516329a47 100644
if (odp->flags & (FLAG_FORWARD | FLAG_REGISTER))
return 0;
diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c
index 07d6eed05fcc..9cc4698d0d7d 100644
index 07d6eed05fc..9cc4698d0d7 100644
--- a/tools/winebuild/spec32.c
+++ b/tools/winebuild/spec32.c
@@ -375,11 +375,11 @@ static void output_relay_debug( DLLSPEC *spec )
@ -497,5 +497,5 @@ index 07d6eed05fcc..9cc4698d0d7d 100644
}
else
--
2.26.2
2.27.0

View File

@ -1,4 +1,4 @@
From 85887cf68b055ca7149a428b32e9cac31e2190ca Mon Sep 17 00:00:00 2001
From 02562df4bb8c6c805b140335b9076a2a895244bf Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 6 Sep 2015 12:41:17 +0200
Subject: [PATCH] ws2_32: Invalidate client-side file descriptor cache in
@ -48,10 +48,10 @@ index 9e1cc85a36e..3f4ba60b7bb 100644
/***********************************************************************
* wine_server_release_fd (NTDLL.@)
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index b09049b855b..bd37b8362b0 100644
index 73be77e7afc..2393f73b306 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -937,6 +937,7 @@ static struct unix_funcs unix_funcs =
@@ -952,6 +952,7 @@ static struct unix_funcs unix_funcs =
fork_and_exec,
wine_server_call,
server_send_fd,
@ -91,7 +91,7 @@ index cf6f6c3832c..586d0ffcf72 100644
/***********************************************************************
* server_get_unix_fd
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index e82b0960343..673d01c6bf9 100644
index 223015a785a..9c385ec42d8 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -99,6 +99,7 @@ extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN;
@ -103,19 +103,19 @@ index e82b0960343..673d01c6bf9 100644
int *needs_close, enum server_fd_type *type,
unsigned int *options ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 958fab4c059..873cc7abdf2 100644
index 6c8e151b554..dd5c3e3784e 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -28,7 +28,7 @@ struct ldt_copy;
struct msghdr;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 43
+#define NTDLL_UNIXLIB_VERSION 44
-#define NTDLL_UNIXLIB_VERSION 46
+#define NTDLL_UNIXLIB_VERSION 47
struct unix_funcs
{
@@ -239,6 +239,7 @@ struct unix_funcs
@@ -267,6 +267,7 @@ struct unix_funcs
/* server functions */
unsigned int (CDECL *server_call)( void *req_ptr );
void (CDECL *server_send_fd)( int fd );

View File

@ -1,26 +0,0 @@
From e8e4434d2a8edf0b964ed0e93500b20718ba961d Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 12 Jun 2020 17:59:11 -0500
Subject: [PATCH] include: Correct the name of WAVEBANKMINIWAVEFORMAT.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
---
include/xact3wb.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/xact3wb.h b/include/xact3wb.h
index c68d7a30fad..81b1518930d 100644
--- a/include/xact3wb.h
+++ b/include/xact3wb.h
@@ -138,7 +138,7 @@ typedef struct WAVEBANKDATA
DWORD dwEntryMetaDataElementSize;
DWORD dwEntryNameElementSize;
DWORD dwAlignment;
- WAVEBANKMINIFORMAT CompactFormat;
+ WAVEBANKMINIWAVEFORMAT CompactFormat;
FILETIME BuildTime;
} WAVEBANKDATA, *LPWAVEBANKDATA;
typedef const WAVEBANKDATA *LPCWAVEBANKDATA;
--
2.27.0

View File

@ -1 +1 @@
948a6a47b8dbd0ddd86cad04de03f0e4ba81b65d
634cb775c27b61ad6ce1fbe3e9972b0edfa31dcb