mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against 948a6a47b8dbd0ddd86cad04de03f0e4ba81b65d.
This commit is contained in:
parent
eb4f9db59c
commit
b6595d9e28
@ -1,71 +1,32 @@
|
||||
From 3c3fd497486e624cbc8ab3a98e2fd02cdf6dc2ba Mon Sep 17 00:00:00 2001
|
||||
From f40642800ca04184680656f05410684b5c5bf003 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 17 Jul 2019 09:26:16 +1000
|
||||
Subject: [PATCH 2/6] directmanipulation: New dll
|
||||
Date: Fri, 12 Jun 2020 16:43:06 -0500
|
||||
Subject: [PATCH] directmanipulation: New dll
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
configure | 2 +
|
||||
configure.ac | 1 +
|
||||
dlls/directmanipulation/Makefile.in | 8 +++
|
||||
dlls/directmanipulation/directmanip.idl | 38 +++++++++++
|
||||
dlls/directmanipulation/directmanipulation.c | 67 +++++++++++++++++++
|
||||
.../directmanipulation.spec | 6 ++
|
||||
6 files changed, 122 insertions(+)
|
||||
create mode 100644 dlls/directmanipulation/Makefile.in
|
||||
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
|
||||
create mode 100644 dlls/directmanipulation/directmanipulation.c
|
||||
create mode 100644 dlls/directmanipulation/directmanipulation.spec
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index f1de2c4052..bc376a6686 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -1231,6 +1231,7 @@ enable_dhtmled_ocx
|
||||
enable_difxapi
|
||||
enable_dinput
|
||||
enable_dinput8
|
||||
+enable_directmanipulation
|
||||
enable_dispex
|
||||
enable_dmband
|
||||
enable_dmcompos
|
||||
@@ -20162,6 +20163,7 @@ wine_fn_config_makefile dlls/dinput enable_dinput
|
||||
wine_fn_config_makefile dlls/dinput/tests enable_tests
|
||||
wine_fn_config_makefile dlls/dinput8 enable_dinput8
|
||||
wine_fn_config_makefile dlls/dinput8/tests enable_tests
|
||||
+wine_fn_config_makefile dlls/directmanipulation enable_directmanipulation
|
||||
wine_fn_config_makefile dlls/dispdib.dll16 enable_win16
|
||||
wine_fn_config_makefile dlls/dispex enable_dispex
|
||||
wine_fn_config_makefile dlls/dispex/tests enable_tests
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a7c45ace73..51519fdd9b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3148,6 +3148,7 @@ WINE_CONFIG_MAKEFILE(dlls/dinput)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dinput/tests)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dinput8)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dinput8/tests)
|
||||
+WINE_CONFIG_MAKEFILE(dlls/directmanipulation)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dispdib.dll16,enable_win16)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dispex)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dispex/tests)
|
||||
diff --git a/dlls/directmanipulation/Makefile.in b/dlls/directmanipulation/Makefile.in
|
||||
new file mode 100644
|
||||
index 0000000000..331c2a8420
|
||||
--- /dev/null
|
||||
index d09d652b61a..331c2a84205 100644
|
||||
--- a/dlls/directmanipulation/Makefile.in
|
||||
+++ b/dlls/directmanipulation/Makefile.in
|
||||
@@ -0,0 +1,8 @@
|
||||
+MODULE = directmanipulation.dll
|
||||
+
|
||||
+EXTRADLLFLAGS = -mno-cygwin
|
||||
+
|
||||
@@ -2,5 +2,7 @@ MODULE = directmanipulation.dll
|
||||
|
||||
EXTRADLLFLAGS = -mno-cygwin
|
||||
|
||||
+IDL_SRCS = directmanip.idl
|
||||
+
|
||||
+C_SRCS = \
|
||||
+ directmanipulation.c
|
||||
C_SRCS = \
|
||||
directmanipulation.c
|
||||
diff --git a/dlls/directmanipulation/directmanip.idl b/dlls/directmanipulation/directmanip.idl
|
||||
new file mode 100644
|
||||
index 0000000000..ff00668ba5
|
||||
index 00000000000..ff00668ba5b
|
||||
--- /dev/null
|
||||
+++ b/dlls/directmanipulation/directmanip.idl
|
||||
@@ -0,0 +1,38 @@
|
||||
@ -108,58 +69,22 @@ index 0000000000..ff00668ba5
|
||||
+ [default] interface IDirectManipulationManager;
|
||||
+}
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.c b/dlls/directmanipulation/directmanipulation.c
|
||||
new file mode 100644
|
||||
index 0000000000..136b2976a4
|
||||
--- /dev/null
|
||||
index 21458ba1fe7..f808bc1a331 100644
|
||||
--- a/dlls/directmanipulation/directmanipulation.c
|
||||
+++ b/dlls/directmanipulation/directmanipulation.c
|
||||
@@ -0,0 +1,67 @@
|
||||
+/*
|
||||
+ * 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
|
||||
+ */
|
||||
+
|
||||
+#include <stdarg.h>
|
||||
+
|
||||
+#include "windef.h"
|
||||
+#include "winbase.h"
|
||||
@@ -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);
|
||||
+
|
||||
+static HINSTANCE dm_instance;
|
||||
+
|
||||
+BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
|
||||
+{
|
||||
+ TRACE("(%p, %u, %p)\n", instance, reason, reserved);
|
||||
+
|
||||
+ switch (reason)
|
||||
+ {
|
||||
+ case DLL_WINE_PREATTACH:
|
||||
+ return FALSE; /* prefer native version */
|
||||
+ case DLL_PROCESS_ATTACH:
|
||||
+ dm_instance = instance;
|
||||
+ DisableThreadLibraryCalls(instance);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
#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 );
|
||||
@ -170,29 +95,21 @@ index 0000000000..136b2976a4
|
||||
+ return __wine_unregister_resources( dm_instance );
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllCanUnloadNow(void)
|
||||
+{
|
||||
+ return S_FALSE;
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
+{
|
||||
+ FIXME("(%s,%s,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
+ return CLASS_E_CLASSNOTAVAILABLE;
|
||||
+}
|
||||
\ No newline at end of file
|
||||
HRESULT WINAPI DllCanUnloadNow(void)
|
||||
{
|
||||
return S_FALSE;
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.spec b/dlls/directmanipulation/directmanipulation.spec
|
||||
new file mode 100644
|
||||
index 0000000000..3f0004daeb
|
||||
--- /dev/null
|
||||
index 6c8a107d5c7..3f0004daebe 100644
|
||||
--- a/dlls/directmanipulation/directmanipulation.spec
|
||||
+++ b/dlls/directmanipulation/directmanipulation.spec
|
||||
@@ -0,0 +1,6 @@
|
||||
+@ stub InitializeDManipHook
|
||||
+@ stdcall -private DllCanUnloadNow()
|
||||
+@ stub DllGetActivationFactory
|
||||
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
||||
@@ -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.17.1
|
||||
2.27.0
|
||||
|
||||
|
@ -1,18 +1,18 @@
|
||||
From d7ab064f1040d0031a0f277f16d2ef7bfe5b1944 Mon Sep 17 00:00:00 2001
|
||||
From 83b3fa31740e063ba4c86667097db974e6ae0c68 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 17 Jul 2019 16:33:21 +1000
|
||||
Subject: [PATCH 4/6] directmanipulation: Create
|
||||
Subject: [PATCH] directmanipulation: Create
|
||||
DirectManipulationManager/DirectManipulationSharedManager objects
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44865
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/directmanipulation/Makefile.in | 1 +
|
||||
dlls/directmanipulation/directmanipulation.c | 205 ++++++++++++++++++-
|
||||
2 files changed, 204 insertions(+), 2 deletions(-)
|
||||
dlls/directmanipulation/directmanipulation.c | 203 ++++++++++++++++++-
|
||||
2 files changed, 203 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/directmanipulation/Makefile.in b/dlls/directmanipulation/Makefile.in
|
||||
index 331c2a8420..d67a21eb77 100644
|
||||
index 331c2a84205..d67a21eb779 100644
|
||||
--- a/dlls/directmanipulation/Makefile.in
|
||||
+++ b/dlls/directmanipulation/Makefile.in
|
||||
@@ -1,4 +1,5 @@
|
||||
@ -22,7 +22,7 @@ index 331c2a8420..d67a21eb77 100644
|
||||
EXTRADLLFLAGS = -mno-cygwin
|
||||
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.c b/dlls/directmanipulation/directmanipulation.c
|
||||
index 136b2976a4..81efa3688b 100644
|
||||
index f808bc1a331..a1e508bac80 100644
|
||||
--- a/dlls/directmanipulation/directmanipulation.c
|
||||
+++ b/dlls/directmanipulation/directmanipulation.c
|
||||
@@ -15,6 +15,7 @@
|
||||
@ -251,9 +251,7 @@ index 136b2976a4..81efa3688b 100644
|
||||
+
|
||||
+ FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
2.27.0
|
||||
|
||||
|
@ -1,23 +1,23 @@
|
||||
From 74693bc85e3dbc1f757cfea348dc385b4badeb89 Mon Sep 17 00:00:00 2001
|
||||
From 0bfc43bff3a9b53e65c82d987bb072f0ff0a3a2b Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Tue, 19 Aug 2014 22:10:49 -0600
|
||||
Subject: [PATCH] ntdll: Implement retrieving DOS attributes in
|
||||
NtQueryInformationFile.
|
||||
[fd_]get_file_info().
|
||||
|
||||
---
|
||||
configure.ac | 12 ++++++++++++
|
||||
dlls/ntdll/file.c | 16 ++++++++++++++++
|
||||
include/wine/port.h | 8 ++++++++
|
||||
libs/port/Makefile.in | 3 ++-
|
||||
libs/port/xattr.c | 39 +++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 77 insertions(+), 1 deletion(-)
|
||||
configure.ac | 12 +++++++++++
|
||||
dlls/ntdll/unix/file.c | 22 ++++++++++++++++++-
|
||||
include/wine/port.h | 9 ++++++++
|
||||
libs/port/Makefile.in | 3 ++-
|
||||
libs/port/xattr.c | 49 ++++++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 93 insertions(+), 2 deletions(-)
|
||||
create mode 100644 libs/port/xattr.c
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 180d958fc4ef..1e3d2e0d4ef0 100644
|
||||
index d3bd12a6340..5e775c04449 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -89,6 +89,7 @@ AC_ARG_WITH(usb, AS_HELP_STRING([--without-usb],[do not use the libusb lib
|
||||
@@ -88,6 +88,7 @@ AC_ARG_WITH(usb, AS_HELP_STRING([--without-usb],[do not use the libusb lib
|
||||
AC_ARG_WITH(v4l2, AS_HELP_STRING([--without-v4l2],[do not use v4l2 (video capture)]))
|
||||
AC_ARG_WITH(vkd3d, AS_HELP_STRING([--without-vkd3d],[do not use vkd3d (Direct3D 12 support)]))
|
||||
AC_ARG_WITH(vulkan, AS_HELP_STRING([--without-vulkan],[do not use Vulkan]))
|
||||
@ -25,7 +25,7 @@ index 180d958fc4ef..1e3d2e0d4ef0 100644
|
||||
AC_ARG_WITH(xcomposite,AS_HELP_STRING([--without-xcomposite],[do not use the Xcomposite extension]),
|
||||
[if test "x$withval" = "xno"; then ac_cv_header_X11_extensions_Xcomposite_h=no; fi])
|
||||
AC_ARG_WITH(xcursor, AS_HELP_STRING([--without-xcursor],[do not use the Xcursor extension]),
|
||||
@@ -709,6 +710,17 @@ AC_CHECK_HEADERS([libprocstat.h],,,
|
||||
@@ -697,6 +698,17 @@ AC_CHECK_HEADERS([libprocstat.h],,,
|
||||
#include <sys/socket.h>
|
||||
#endif])
|
||||
|
||||
@ -43,13 +43,13 @@ index 180d958fc4ef..1e3d2e0d4ef0 100644
|
||||
dnl **** Check for working dll ****
|
||||
|
||||
AC_SUBST(DLLFLAGS,"-D_REENTRANT")
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 9a9acfdb623b..5536e61db2e4 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -126,6 +126,22 @@ mode_t FILE_umask = 0;
|
||||
NTSTATUS FILE_DecodeSymlink(const char *unix_src, char *unix_dest, USHORT *unix_dest_len,
|
||||
DWORD *tag, ULONG *flags, BOOL *is_dir);
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 66ce2eb5fe4..d2e783f3300 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -1431,6 +1431,22 @@ static BOOL append_entry( struct dir_data *data, const char *long_name,
|
||||
}
|
||||
|
||||
|
||||
+/* Match the Samba conventions for storing DOS file attributes */
|
||||
+#define SAMBA_XATTR_DOS_ATTRIB XATTR_USER_PREFIX "DOSATTRIB"
|
||||
@ -70,11 +70,31 @@ index 9a9acfdb623b..5536e61db2e4 100644
|
||||
/* fetch the attributes of a file */
|
||||
static inline ULONG get_file_attributes( const struct stat *st )
|
||||
{
|
||||
@@ -1450,7 +1466,8 @@ static inline ULONG get_file_attributes( const struct stat *st )
|
||||
static int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
{
|
||||
char *parent_path;
|
||||
- int ret;
|
||||
+ char hexattr[11];
|
||||
+ int len, ret;
|
||||
|
||||
*attr = 0;
|
||||
ret = lstat( path, st );
|
||||
@@ -1476,6 +1493,9 @@ static int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
RtlFreeHeap( GetProcessHeap(), 0, parent_path );
|
||||
}
|
||||
*attr |= get_file_attributes( st );
|
||||
+ len = xattr_get( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, sizeof(hexattr)-1 );
|
||||
+ if (len == -1) return ret;
|
||||
+ *attr |= get_file_xattr( hexattr, len );
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/include/wine/port.h b/include/wine/port.h
|
||||
index e8434c73cca2..f0507efcc7e7 100644
|
||||
index e8434c73cca..6e81cb71a76 100644
|
||||
--- a/include/wine/port.h
|
||||
+++ b/include/wine/port.h
|
||||
@@ -361,6 +361,14 @@ int usleep (unsigned int useconds);
|
||||
@@ -361,6 +361,15 @@ int usleep (unsigned int useconds);
|
||||
|
||||
extern int mkstemps(char *template, int suffix_len);
|
||||
|
||||
@ -85,12 +105,13 @@ index e8434c73cca2..f0507efcc7e7 100644
|
||||
+#endif
|
||||
+
|
||||
+extern int xattr_fget( int filedes, const char *name, void *value, size_t size );
|
||||
+extern int xattr_get( const char *path, const char *name, void *value, size_t size );
|
||||
+
|
||||
#else /* NO_LIBWINE_PORT */
|
||||
|
||||
#define __WINE_NOT_PORTABLE(func) func##_is_not_portable func##_is_not_portable
|
||||
diff --git a/libs/port/Makefile.in b/libs/port/Makefile.in
|
||||
index 1963afe24232..4b1ecab7516b 100644
|
||||
index 1963afe2423..4b1ecab7516 100644
|
||||
--- a/libs/port/Makefile.in
|
||||
+++ b/libs/port/Makefile.in
|
||||
@@ -22,4 +22,5 @@ C_SRCS = \
|
||||
@ -102,10 +123,10 @@ index 1963afe24232..4b1ecab7516b 100644
|
||||
+ xattr.c
|
||||
diff --git a/libs/port/xattr.c b/libs/port/xattr.c
|
||||
new file mode 100644
|
||||
index 000000000000..94b77132bbf2
|
||||
index 00000000000..88e900dac6d
|
||||
--- /dev/null
|
||||
+++ b/libs/port/xattr.c
|
||||
@@ -0,0 +1,39 @@
|
||||
@@ -0,0 +1,49 @@
|
||||
+/*
|
||||
+ * extended attributes functions
|
||||
+ *
|
||||
@ -145,6 +166,16 @@ index 000000000000..94b77132bbf2
|
||||
+ return -1;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+int xattr_get( const char *path, const char *name, void *value, size_t size )
|
||||
+{
|
||||
+#if defined(HAVE_ATTR_XATTR_H)
|
||||
+ return getxattr( path, name, value, size );
|
||||
+#else
|
||||
+ errno = ENOSYS;
|
||||
+ return -1;
|
||||
+#endif
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
@ -1,69 +0,0 @@
|
||||
From 34ed49d7dbff7c5f0da8553330c3378b574429fc Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Wed, 20 Aug 2014 16:04:34 -0600
|
||||
Subject: [PATCH] ntdll: Implement retrieving DOS attributes in
|
||||
NtQuery[Full]AttributesFile and NtQueryDirectoryFile.
|
||||
|
||||
---
|
||||
dlls/ntdll/file.c | 6 +++++-
|
||||
include/wine/port.h | 1 +
|
||||
libs/port/xattr.c | 10 ++++++++++
|
||||
3 files changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 5536e61db2e4..2fd62ebfb802 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -182,7 +182,8 @@ int fd_get_file_info( int fd, unsigned int options, struct stat *st, ULONG *attr
|
||||
int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
{
|
||||
char *parent_path;
|
||||
- int ret;
|
||||
+ char hexattr[11];
|
||||
+ int len, ret;
|
||||
|
||||
*attr = 0;
|
||||
ret = lstat( path, st );
|
||||
@@ -215,6 +216,9 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
RtlFreeHeap( GetProcessHeap(), 0, parent_path );
|
||||
}
|
||||
*attr |= get_file_attributes( st );
|
||||
+ len = xattr_get( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, sizeof(hexattr)-1 );
|
||||
+ if (len == -1) return ret;
|
||||
+ *attr |= get_file_xattr( hexattr, len );
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/include/wine/port.h b/include/wine/port.h
|
||||
index f0507efcc7e7..6e81cb71a76d 100644
|
||||
--- a/include/wine/port.h
|
||||
+++ b/include/wine/port.h
|
||||
@@ -368,6 +368,7 @@ extern int mkstemps(char *template, int suffix_len);
|
||||
#endif
|
||||
|
||||
extern int xattr_fget( int filedes, const char *name, void *value, size_t size );
|
||||
+extern int xattr_get( const char *path, const char *name, void *value, size_t size );
|
||||
|
||||
#else /* NO_LIBWINE_PORT */
|
||||
|
||||
diff --git a/libs/port/xattr.c b/libs/port/xattr.c
|
||||
index 94b77132bbf2..88e900dac6d4 100644
|
||||
--- a/libs/port/xattr.c
|
||||
+++ b/libs/port/xattr.c
|
||||
@@ -37,3 +37,13 @@ int xattr_fget( int filedes, const char *name, void *value, size_t size )
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
+
|
||||
+int xattr_get( const char *path, const char *name, void *value, size_t size )
|
||||
+{
|
||||
+#if defined(HAVE_ATTR_XATTR_H)
|
||||
+ return getxattr( path, name, value, size );
|
||||
+#else
|
||||
+ errno = ENOSYS;
|
||||
+ return -1;
|
||||
+#endif
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1a04bc9a0ef3cf03b89d50becee9240f8a195873 Mon Sep 17 00:00:00 2001
|
||||
From 9f17f2e4f9842549820691f34f7d2da5719ead0a 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
|
||||
@ -12,10 +12,10 @@ Subject: [PATCH] ntdll: Implement storing DOS attributes in
|
||||
4 files changed, 60 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 2fd62ebfb802..c077add9769e 100644
|
||||
index bd6e3cbcf88..c1f9808e497 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -178,6 +178,39 @@ int fd_get_file_info( int fd, unsigned int options, struct stat *st, ULONG *attr
|
||||
@@ -177,6 +177,39 @@ int fd_get_file_info( int fd, unsigned int options, struct stat *st, ULONG *attr
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -52,10 +52,10 @@ index 2fd62ebfb802..c077add9769e 100644
|
||||
+ return STATUS_SUCCESS;
|
||||
+}
|
||||
+
|
||||
/* get the stat info and file attributes for a file (by name) */
|
||||
int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
static int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
{
|
||||
@@ -3240,7 +3273,6 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
|
||||
char *parent_path;
|
||||
@@ -3113,7 +3146,6 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
|
||||
case FileBasicInformation:
|
||||
if (len >= sizeof(FILE_BASIC_INFORMATION))
|
||||
{
|
||||
@ -63,7 +63,7 @@ index 2fd62ebfb802..c077add9769e 100644
|
||||
const FILE_BASIC_INFORMATION *info = ptr;
|
||||
LARGE_INTEGER mtime, atime;
|
||||
|
||||
@@ -3254,25 +3286,7 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
|
||||
@@ -3127,25 +3159,7 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
|
||||
io->u.Status = set_file_times( fd, &mtime, &atime );
|
||||
|
||||
if (io->u.Status == STATUS_SUCCESS && info->FileAttributes)
|
||||
@ -91,7 +91,7 @@ index 2fd62ebfb802..c077add9769e 100644
|
||||
if (needs_close) close( fd );
|
||||
}
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 0b05c39685cd..b49a9a4dbbda 100644
|
||||
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)
|
||||
@ -131,7 +131,7 @@ index 0b05c39685cd..b49a9a4dbbda 100644
|
||||
/* 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 6e81cb71a76d..f90396727d6d 100644
|
||||
index 6e81cb71a76..f90396727d6 100644
|
||||
--- a/include/wine/port.h
|
||||
+++ b/include/wine/port.h
|
||||
@@ -368,6 +368,8 @@ extern int mkstemps(char *template, int suffix_len);
|
||||
@ -144,7 +144,7 @@ index 6e81cb71a76d..f90396727d6d 100644
|
||||
|
||||
#else /* NO_LIBWINE_PORT */
|
||||
diff --git a/libs/port/xattr.c b/libs/port/xattr.c
|
||||
index 88e900dac6d4..6918c9956cc6 100644
|
||||
index 88e900dac6d..6918c9956cc 100644
|
||||
--- a/libs/port/xattr.c
|
||||
+++ b/libs/port/xattr.c
|
||||
@@ -38,6 +38,26 @@ int xattr_fget( int filedes, const char *name, void *value, size_t size )
|
||||
@ -175,5 +175,5 @@ index 88e900dac6d4..6918c9956cc6 100644
|
||||
{
|
||||
#if defined(HAVE_ATTR_XATTR_H)
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
||||
|
@ -1,136 +1,17 @@
|
||||
From 8fde8af21e169d9a48bab50bac4d6e24238141b6 Mon Sep 17 00:00:00 2001
|
||||
From 769a1043bb174557b600c9ce38765846a3126e7f Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Wed, 20 Aug 2014 15:28:00 -0600
|
||||
Subject: [PATCH] ntdll: Implement storing DOS attributes in NtCreateFile.
|
||||
|
||||
---
|
||||
dlls/ntdll/file.c | 76 +++++++++++++++++++++++-------------
|
||||
dlls/ntdll/tests/directory.c | 24 ++++++------
|
||||
dlls/ntdll/unix/file.c | 74 +++++++++++++++++++++++-------------
|
||||
include/wine/port.h | 2 +
|
||||
libs/port/xattr.c | 20 ++++++++++
|
||||
4 files changed, 82 insertions(+), 40 deletions(-)
|
||||
4 files changed, 81 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index c077add9769e..a596afed72e7 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -255,6 +255,21 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
return ret;
|
||||
}
|
||||
|
||||
+NTSTATUS set_file_info( const char *path, ULONG attr )
|
||||
+{
|
||||
+ char hexattr[11];
|
||||
+ int len;
|
||||
+
|
||||
+ /* 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)
|
||||
+ xattr_set( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, len );
|
||||
+ else
|
||||
+ xattr_remove( path, SAMBA_XATTR_DOS_ATTRIB );
|
||||
+ return STATUS_SUCCESS;
|
||||
+}
|
||||
+
|
||||
/**************************************************************************
|
||||
* FILE_CreateFile (internal)
|
||||
* Open a file.
|
||||
@@ -266,6 +281,10 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
ULONG attributes, ULONG sharing, ULONG disposition,
|
||||
ULONG options, PVOID ea_buffer, ULONG ea_length )
|
||||
{
|
||||
+ static UNICODE_STRING empty_string;
|
||||
+ OBJECT_ATTRIBUTES unix_attr;
|
||||
+ data_size_t len;
|
||||
+ struct object_attributes *objattr;
|
||||
ANSI_STRING unix_name;
|
||||
BOOL created = FALSE;
|
||||
|
||||
@@ -309,37 +328,34 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
io->u.Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
- if (io->u.Status == STATUS_SUCCESS)
|
||||
+ if (io->u.Status != STATUS_SUCCESS)
|
||||
{
|
||||
- static UNICODE_STRING empty_string;
|
||||
- OBJECT_ATTRIBUTES unix_attr = *attr;
|
||||
- data_size_t len;
|
||||
- struct object_attributes *objattr;
|
||||
-
|
||||
- unix_attr.ObjectName = &empty_string; /* we send the unix name instead */
|
||||
- if ((io->u.Status = alloc_object_attributes( &unix_attr, &objattr, &len )))
|
||||
- {
|
||||
- RtlFreeAnsiString( &unix_name );
|
||||
- return io->u.Status;
|
||||
- }
|
||||
+ WARN("%s not found (%x)\n", debugstr_us(attr->ObjectName), io->u.Status );
|
||||
+ return io->u.Status;
|
||||
+ }
|
||||
|
||||
- SERVER_START_REQ( create_file )
|
||||
- {
|
||||
- req->access = access;
|
||||
- req->sharing = sharing;
|
||||
- req->create = disposition;
|
||||
- req->options = options;
|
||||
- req->attrs = attributes;
|
||||
- wine_server_add_data( req, objattr, len );
|
||||
- wine_server_add_data( req, unix_name.Buffer, unix_name.Length );
|
||||
- io->u.Status = wine_server_call( req );
|
||||
- *handle = wine_server_ptr_handle( reply->handle );
|
||||
- }
|
||||
- SERVER_END_REQ;
|
||||
- RtlFreeHeap( GetProcessHeap(), 0, objattr );
|
||||
+ unix_attr = *attr;
|
||||
+ unix_attr.ObjectName = &empty_string; /* we send the unix name instead */
|
||||
+ if ((io->u.Status = alloc_object_attributes( &unix_attr, &objattr, &len )))
|
||||
+ {
|
||||
RtlFreeAnsiString( &unix_name );
|
||||
+ return io->u.Status;
|
||||
}
|
||||
- else WARN("%s not found (%x)\n", debugstr_us(attr->ObjectName), io->u.Status );
|
||||
+
|
||||
+ SERVER_START_REQ( create_file )
|
||||
+ {
|
||||
+ req->access = access;
|
||||
+ req->sharing = sharing;
|
||||
+ req->create = disposition;
|
||||
+ req->options = options;
|
||||
+ req->attrs = attributes;
|
||||
+ wine_server_add_data( req, objattr, len );
|
||||
+ wine_server_add_data( req, unix_name.Buffer, unix_name.Length );
|
||||
+ io->u.Status = wine_server_call( req );
|
||||
+ *handle = wine_server_ptr_handle( reply->handle );
|
||||
+ }
|
||||
+ SERVER_END_REQ;
|
||||
+ RtlFreeHeap( GetProcessHeap(), 0, objattr );
|
||||
|
||||
if (io->u.Status == STATUS_SUCCESS)
|
||||
{
|
||||
@@ -361,6 +377,11 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
io->Information = FILE_OVERWRITTEN;
|
||||
break;
|
||||
}
|
||||
+ if (io->Information == FILE_CREATED)
|
||||
+ {
|
||||
+ /* set any DOS extended attributes */
|
||||
+ set_file_info( unix_name.Buffer, attributes );
|
||||
+ }
|
||||
}
|
||||
else if (io->u.Status == STATUS_TOO_MANY_OPENED_FILES)
|
||||
{
|
||||
@@ -368,6 +389,7 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
if (!once++) ERR_(winediag)( "Too many open files, ulimit -n probably needs to be increased\n" );
|
||||
}
|
||||
|
||||
+ RtlFreeAnsiString( &unix_name );
|
||||
return io->u.Status;
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c
|
||||
index 4618f4eaff2b..44933c2153df 100644
|
||||
index 248ed99ab20..e0f4debc624 100644
|
||||
--- a/dlls/ntdll/tests/directory.c
|
||||
+++ b/dlls/ntdll/tests/directory.c
|
||||
@@ -55,7 +55,6 @@ static NTSTATUS (WINAPI *pRtlWow64EnableFsRedirectionEx)( ULONG disable, ULONG *
|
||||
@ -178,8 +59,125 @@ index 4618f4eaff2b..44933c2153df 100644
|
||||
testfiles[i].attr_done = TRUE;
|
||||
}
|
||||
testfiles[i].nfound++;
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 66ce2eb5fe4..0546039cc47 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -3004,6 +3004,20 @@ void CDECL set_show_dot_files( BOOL enable )
|
||||
show_dot_files = enable;
|
||||
}
|
||||
|
||||
+NTSTATUS set_file_info( const char *path, ULONG attr )
|
||||
+{
|
||||
+ char hexattr[11];
|
||||
+ int len;
|
||||
+
|
||||
+ /* 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)
|
||||
+ xattr_set( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, len );
|
||||
+ else
|
||||
+ xattr_remove( path, SAMBA_XATTR_DOS_ATTRIB );
|
||||
+ return STATUS_SUCCESS;
|
||||
+}
|
||||
|
||||
/******************************************************************************
|
||||
* NtCreateFile (NTDLL.@)
|
||||
@@ -3013,6 +3027,10 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
ULONG attributes, ULONG sharing, ULONG disposition,
|
||||
ULONG options, void *ea_buffer, ULONG ea_length )
|
||||
{
|
||||
+ static UNICODE_STRING empty_string;
|
||||
+ OBJECT_ATTRIBUTES unix_attr;
|
||||
+ data_size_t len;
|
||||
+ struct object_attributes *objattr;
|
||||
ANSI_STRING unix_name;
|
||||
BOOL created = FALSE;
|
||||
|
||||
@@ -3055,36 +3073,34 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
io->u.Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
- if (io->u.Status == STATUS_SUCCESS)
|
||||
+ if (io->u.Status != STATUS_SUCCESS)
|
||||
{
|
||||
- static UNICODE_STRING empty_string;
|
||||
- OBJECT_ATTRIBUTES unix_attr = *attr;
|
||||
- data_size_t len;
|
||||
- struct object_attributes *objattr;
|
||||
+ WARN("%s not found (%x)\n", debugstr_us(attr->ObjectName), io->u.Status );
|
||||
+ return io->u.Status;
|
||||
+ }
|
||||
|
||||
- unix_attr.ObjectName = &empty_string; /* we send the unix name instead */
|
||||
- if ((io->u.Status = alloc_object_attributes( &unix_attr, &objattr, &len )))
|
||||
- {
|
||||
- RtlFreeAnsiString( &unix_name );
|
||||
- return io->u.Status;
|
||||
- }
|
||||
- SERVER_START_REQ( create_file )
|
||||
- {
|
||||
- req->access = access;
|
||||
- req->sharing = sharing;
|
||||
- req->create = disposition;
|
||||
- req->options = options;
|
||||
- req->attrs = attributes;
|
||||
- wine_server_add_data( req, objattr, len );
|
||||
- wine_server_add_data( req, unix_name.Buffer, unix_name.Length );
|
||||
- io->u.Status = wine_server_call( req );
|
||||
- *handle = wine_server_ptr_handle( reply->handle );
|
||||
- }
|
||||
- SERVER_END_REQ;
|
||||
- RtlFreeHeap( GetProcessHeap(), 0, objattr );
|
||||
+ unix_attr = *attr;
|
||||
+ unix_attr.ObjectName = &empty_string; /* we send the unix name instead */
|
||||
+ if ((io->u.Status = alloc_object_attributes( &unix_attr, &objattr, &len )))
|
||||
+ {
|
||||
RtlFreeAnsiString( &unix_name );
|
||||
+ return io->u.Status;
|
||||
}
|
||||
- else WARN( "%s not found (%x)\n", debugstr_us(attr->ObjectName), io->u.Status );
|
||||
+
|
||||
+ SERVER_START_REQ( create_file )
|
||||
+ {
|
||||
+ req->access = access;
|
||||
+ req->sharing = sharing;
|
||||
+ req->create = disposition;
|
||||
+ req->options = options;
|
||||
+ req->attrs = attributes;
|
||||
+ wine_server_add_data( req, objattr, len );
|
||||
+ wine_server_add_data( req, unix_name.Buffer, unix_name.Length );
|
||||
+ io->u.Status = wine_server_call( req );
|
||||
+ *handle = wine_server_ptr_handle( reply->handle );
|
||||
+ }
|
||||
+ SERVER_END_REQ;
|
||||
+ RtlFreeHeap( GetProcessHeap(), 0, objattr );
|
||||
|
||||
if (io->u.Status == STATUS_SUCCESS)
|
||||
{
|
||||
@@ -3106,6 +3122,11 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
io->Information = FILE_OVERWRITTEN;
|
||||
break;
|
||||
}
|
||||
+ if (io->Information == FILE_CREATED)
|
||||
+ {
|
||||
+ /* set any DOS extended attributes */
|
||||
+ set_file_info( unix_name.Buffer, attributes );
|
||||
+ }
|
||||
}
|
||||
else if (io->u.Status == STATUS_TOO_MANY_OPENED_FILES)
|
||||
{
|
||||
@@ -3113,6 +3134,7 @@ NTSTATUS WINAPI NtCreateFile( HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBU
|
||||
if (!once++) ERR_(winediag)( "Too many open files, ulimit -n probably needs to be increased\n" );
|
||||
}
|
||||
|
||||
+ RtlFreeAnsiString( &unix_name );
|
||||
return io->u.Status;
|
||||
}
|
||||
|
||||
diff --git a/include/wine/port.h b/include/wine/port.h
|
||||
index f90396727d6d..7d2c73887073 100644
|
||||
index f90396727d6..7d2c7388707 100644
|
||||
--- a/include/wine/port.h
|
||||
+++ b/include/wine/port.h
|
||||
@@ -371,6 +371,8 @@ extern int xattr_fget( int filedes, const char *name, void *value, size_t size )
|
||||
@ -192,7 +190,7 @@ index f90396727d6d..7d2c73887073 100644
|
||||
#else /* NO_LIBWINE_PORT */
|
||||
|
||||
diff --git a/libs/port/xattr.c b/libs/port/xattr.c
|
||||
index 6918c9956cc6..683e7a615e2b 100644
|
||||
index 6918c9956cc..683e7a615e2 100644
|
||||
--- a/libs/port/xattr.c
|
||||
+++ b/libs/port/xattr.c
|
||||
@@ -67,3 +67,23 @@ int xattr_get( const char *path, const char *name, void *value, size_t size )
|
||||
@ -220,5 +218,5 @@ index 6918c9956cc6..683e7a615e2b 100644
|
||||
+#endif
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
||||
|
@ -1,31 +1,27 @@
|
||||
From e1e41f084c6cdeba3cb44aaa6753b13bc1411df8 Mon Sep 17 00:00:00 2001
|
||||
From 01a10dd50491ca0162a5293836cf9b9a3d3c0e34 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Wed, 20 Aug 2014 11:26:48 -0600
|
||||
Subject: [PATCH] ntdll: Perform the Unix-style hidden file check within the
|
||||
unified file info grabbing routine.
|
||||
|
||||
---
|
||||
dlls/ntdll/directory.c | 15 +++++----------
|
||||
dlls/ntdll/file.c | 10 ++++------
|
||||
dlls/ntdll/ntdll_misc.h | 2 +-
|
||||
3 files changed, 10 insertions(+), 17 deletions(-)
|
||||
dlls/ntdll/unix/file.c | 23 +++++++++--------------
|
||||
1 file changed, 9 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
|
||||
index ba50aa1b807..d6bf1354a5b 100644
|
||||
--- a/dlls/ntdll/directory.c
|
||||
+++ b/dlls/ntdll/directory.c
|
||||
@@ -1274,17 +1274,17 @@ static DWORD WINAPI init_options( RTL_RUN_ONCE *once, void *param, void **contex
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 496c92265e9..6f3772d20be 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -1217,15 +1217,15 @@ static BOOLEAN get_dir_case_sensitivity( const char *dir )
|
||||
*
|
||||
* Check if the specified file should be hidden based on its name and the show dot files option.
|
||||
*/
|
||||
-BOOL DIR_is_hidden_file( const UNICODE_STRING *name )
|
||||
+BOOL DIR_is_hidden_file( const char *name )
|
||||
-static BOOL is_hidden_file( const UNICODE_STRING *name )
|
||||
+static BOOL is_hidden_file( const char *name )
|
||||
{
|
||||
- WCHAR *p, *end;
|
||||
+ char *p, *end;
|
||||
|
||||
RtlRunOnceExecuteOnce( &init_once, init_options, NULL, NULL );
|
||||
|
||||
if (show_dot_files) return FALSE;
|
||||
|
||||
- end = p = name->Buffer + name->Length/sizeof(WCHAR);
|
||||
@ -37,7 +33,18 @@ index ba50aa1b807..d6bf1354a5b 100644
|
||||
if (p == end || *p != '.') return FALSE;
|
||||
/* make sure it isn't '.' or '..' */
|
||||
if (p + 1 == end) return FALSE;
|
||||
@@ -1532,11 +1532,6 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I
|
||||
@@ -1493,6 +1493,10 @@ 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 (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 );
|
||||
if (len == -1) return ret;
|
||||
*attr |= get_file_xattr( hexattr, len );
|
||||
@@ -1684,11 +1688,6 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I
|
||||
if (class != FileNamesInformation)
|
||||
{
|
||||
if (st.st_dev != dir_data->id.dev) st.st_ino = 0; /* ignore inode if on a different device */
|
||||
@ -49,55 +56,25 @@ index ba50aa1b807..d6bf1354a5b 100644
|
||||
fill_file_info( &st, attributes, info, class );
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 6a935044f46..a0e54c27198 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -250,6 +250,10 @@ 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 ))
|
||||
+ *attr |= FILE_ATTRIBUTE_HIDDEN;
|
||||
+ /* retrieve any stored DOS attributes */
|
||||
len = xattr_get( path, SAMBA_XATTR_DOS_ATTRIB, hexattr, sizeof(hexattr)-1 );
|
||||
if (len == -1) return ret;
|
||||
*attr |= get_file_xattr( hexattr, len );
|
||||
@@ -3489,8 +3493,6 @@ NTSTATUS WINAPI NtQueryFullAttributesFile( const OBJECT_ATTRIBUTES *attr,
|
||||
@@ -3301,7 +3300,6 @@ NTSTATUS WINAPI NtQueryFullAttributesFile( const OBJECT_ATTRIBUTES *attr,
|
||||
info->AllocationSize = std.AllocationSize;
|
||||
info->EndOfFile = std.EndOfFile;
|
||||
info->FileAttributes = basic.FileAttributes;
|
||||
- if (DIR_is_hidden_file( attr->ObjectName ))
|
||||
- info->FileAttributes |= FILE_ATTRIBUTE_HIDDEN;
|
||||
- if (is_hidden_file( attr->ObjectName )) info->FileAttributes |= FILE_ATTRIBUTE_HIDDEN;
|
||||
}
|
||||
RtlFreeAnsiString( &unix_name );
|
||||
}
|
||||
@@ -3518,11 +3520,7 @@ NTSTATUS WINAPI NtQueryAttributesFile( const OBJECT_ATTRIBUTES *attr, FILE_BASIC
|
||||
@@ -3328,10 +3326,7 @@ NTSTATUS WINAPI NtQueryAttributesFile( const OBJECT_ATTRIBUTES *attr, FILE_BASIC
|
||||
else if (!S_ISREG(st.st_mode) && !S_ISDIR(st.st_mode))
|
||||
status = STATUS_INVALID_INFO_CLASS;
|
||||
else
|
||||
- {
|
||||
status = fill_file_info( &st, attributes, info, FileBasicInformation );
|
||||
- if (DIR_is_hidden_file( attr->ObjectName ))
|
||||
- info->FileAttributes |= FILE_ATTRIBUTE_HIDDEN;
|
||||
- if (is_hidden_file( attr->ObjectName )) info->FileAttributes |= FILE_ATTRIBUTE_HIDDEN;
|
||||
- }
|
||||
RtlFreeAnsiString( &unix_name );
|
||||
}
|
||||
else WARN("%s not found (%x)\n", debugstr_us(attr->ObjectName), status );
|
||||
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
|
||||
index aeed9b857c2..b1cb9aa6843 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -168,7 +168,7 @@ extern NTSTATUS fill_file_info( const struct stat *st, ULONG attr, void *ptr,
|
||||
FILE_INFORMATION_CLASS class ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS server_get_unix_name( HANDLE handle, ANSI_STRING *unix_name ) DECLSPEC_HIDDEN;
|
||||
extern void init_directories(void) DECLSPEC_HIDDEN;
|
||||
-extern BOOL DIR_is_hidden_file( const UNICODE_STRING *name ) DECLSPEC_HIDDEN;
|
||||
+extern BOOL DIR_is_hidden_file( const char *name ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS DIR_unmount_device( HANDLE handle ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS DIR_get_unix_cwd( char **cwd ) DECLSPEC_HIDDEN;
|
||||
extern unsigned int DIR_get_drives_info( struct drive_info info[MAX_DOS_DRIVES] ) DECLSPEC_HIDDEN;
|
||||
else WARN( "%s not found (%x)\n", debugstr_us(attr->ObjectName), status );
|
||||
--
|
||||
2.25.1
|
||||
2.27.0
|
||||
|
||||
|
@ -2,3 +2,6 @@ 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
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e171bdbabedaeaafc0181ee156bf08ef180809da Mon Sep 17 00:00:00 2001
|
||||
From e3e2a837a2dd411b3e265581388fba1050e08c53 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Thu, 16 Jan 2014 20:56:49 -0700
|
||||
Subject: [PATCH] ntdll: Add support for junction point creation.
|
||||
@ -18,10 +18,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
create mode 100644 libs/port/renameat2.c
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 816e3684510..a1b6096b9b7 100644
|
||||
index 8a76b74e83d..d3bd12a6340 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -2202,6 +2202,8 @@ AC_CHECK_FUNCS(\
|
||||
@@ -2203,6 +2203,8 @@ AC_CHECK_FUNCS(\
|
||||
pwrite \
|
||||
readdir \
|
||||
readlink \
|
||||
@ -31,7 +31,7 @@ index 816e3684510..a1b6096b9b7 100644
|
||||
select \
|
||||
setproctitle \
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 013706889bb..37dca75651c 100644
|
||||
index b3e881ac3c9..5a4004a61a4 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -21,6 +21,7 @@
|
||||
@ -49,8 +49,8 @@ index 013706889bb..37dca75651c 100644
|
||||
+#include "ntifs.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(winediag);
|
||||
@@ -1663,6 +1665,104 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
|
||||
|
||||
@@ -1545,6 +1547,104 @@ NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE handle, HANDLE event,
|
||||
}
|
||||
|
||||
|
||||
@ -155,7 +155,7 @@ index 013706889bb..37dca75651c 100644
|
||||
/**************************************************************************
|
||||
* NtFsControlFile [NTDLL.@]
|
||||
* ZwFsControlFile [NTDLL.@]
|
||||
@@ -1747,6 +1847,24 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
@@ -1629,6 +1729,24 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||
io->Information = 0;
|
||||
status = STATUS_SUCCESS;
|
||||
break;
|
||||
@ -181,7 +181,7 @@ index 013706889bb..37dca75651c 100644
|
||||
return server_ioctl_file( handle, event, apc, apc_context, io, code,
|
||||
in_buffer, in_size, out_buffer, out_size );
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 31c18454f0e..046b49c2d2b 100644
|
||||
index 184b7cdad59..8b5ddbb0da1 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -38,6 +38,7 @@
|
||||
@ -192,7 +192,7 @@ index 31c18454f0e..046b49c2d2b 100644
|
||||
|
||||
#ifndef IO_COMPLETION_ALL_ACCESS
|
||||
#define IO_COMPLETION_ALL_ACCESS 0x001F0003
|
||||
@@ -4953,6 +4954,105 @@ static void test_file_readonly_access(void)
|
||||
@@ -4971,6 +4972,105 @@ static void test_file_readonly_access(void)
|
||||
DeleteFileW(path);
|
||||
}
|
||||
|
||||
@ -298,17 +298,17 @@ index 31c18454f0e..046b49c2d2b 100644
|
||||
START_TEST(file)
|
||||
{
|
||||
HMODULE hkernel32 = GetModuleHandleA("kernel32.dll");
|
||||
@@ -5023,4 +5123,5 @@ START_TEST(file)
|
||||
@@ -5041,4 +5141,5 @@ START_TEST(file)
|
||||
test_query_attribute_information_file();
|
||||
test_ioctl();
|
||||
test_flush_buffers_file();
|
||||
+ test_reparse_points();
|
||||
}
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index 9796dd8e5d9..410ae718e99 100644
|
||||
index 9f70e72b4c7..1c5c456aa39 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -517,6 +517,7 @@ SOURCES = \
|
||||
@@ -518,6 +518,7 @@ SOURCES = \
|
||||
ntddvdeo.h \
|
||||
ntdef.h \
|
||||
ntdsapi.h \
|
||||
@ -458,5 +458,5 @@ index 00000000000..f46f407ec71
|
||||
+}
|
||||
+#endif /* HAVE_RENAMEAT2 */
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 5b9831bcc26ab81b428b9c8f996c50b50c195a5d Mon Sep 17 00:00:00 2001
|
||||
From 804bc6397bcf91a50ec6d13ca296e564ee19d689 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Tue, 30 Apr 2019 16:24:54 -0600
|
||||
Subject: [PATCH] ntdll: Allow creation of dangling reparse points to
|
||||
@ -6,16 +6,31 @@ Subject: [PATCH] ntdll: Allow creation of dangling reparse points to
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
dlls/ntdll/directory.c | 13 +++++++++++++
|
||||
dlls/ntdll/file.c | 3 ++-
|
||||
dlls/ntdll/unix/file.c | 13 +++++++++++++
|
||||
include/winternl.h | 1 +
|
||||
3 files changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
|
||||
index 7b0627cd3d..669fd56cbe 100644
|
||||
--- a/dlls/ntdll/directory.c
|
||||
+++ b/dlls/ntdll/directory.c
|
||||
@@ -2644,6 +2644,19 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 6c5da524aad..aad4ba5615b 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -1619,8 +1619,9 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
RtlCreateUnicodeString( &nt_dest, dest );
|
||||
nt_dest.Length = dest_len;
|
||||
}
|
||||
+
|
||||
nt_dest_allocated = TRUE;
|
||||
- status = wine_nt_to_unix_file_name( &nt_dest, &unix_dest, 0, FALSE );
|
||||
+ status = wine_nt_to_unix_file_name( &nt_dest, &unix_dest, FILE_WINE_PATH, FALSE );
|
||||
if (status != STATUS_SUCCESS && status != STATUS_NO_SUCH_FILE)
|
||||
goto cleanup;
|
||||
dest_allocated = TRUE;
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 13096e085e8..a2fc2a6425b 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -2726,6 +2726,19 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer
|
||||
status = STATUS_OBJECT_NAME_COLLISION;
|
||||
}
|
||||
}
|
||||
@ -35,26 +50,11 @@ index 7b0627cd3d..669fd56cbe 100644
|
||||
|
||||
if (status != STATUS_SUCCESS) break;
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index e27382adf7..22764f05f3 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -1714,8 +1714,9 @@ NTSTATUS FILE_CreateSymlink(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
RtlCreateUnicodeString( &nt_dest, dest );
|
||||
nt_dest.Length = dest_len;
|
||||
}
|
||||
+
|
||||
nt_dest_allocated = TRUE;
|
||||
- status = wine_nt_to_unix_file_name( &nt_dest, &unix_dest, 0, FALSE );
|
||||
+ status = wine_nt_to_unix_file_name( &nt_dest, &unix_dest, FILE_WINE_PATH, FALSE );
|
||||
if (status != STATUS_SUCCESS && status != STATUS_NO_SUCH_FILE)
|
||||
goto cleanup;
|
||||
dest_allocated = TRUE;
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index e0a827a11c..b71e456b53 100644
|
||||
index 39776d36f92..2e8c3866a3a 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -1816,6 +1816,7 @@ typedef struct _RTL_HANDLE_TABLE
|
||||
@@ -1839,6 +1839,7 @@ typedef struct _RTL_HANDLE_TABLE
|
||||
#define FILE_OVERWRITE 4
|
||||
#define FILE_OVERWRITE_IF 5
|
||||
#define FILE_MAXIMUM_DISPOSITION 5
|
||||
@ -63,5 +63,5 @@ index e0a827a11c..b71e456b53 100644
|
||||
/* Characteristics of a File System */
|
||||
#define FILE_REMOVABLE_MEDIA 0x00000001
|
||||
--
|
||||
2.24.1
|
||||
2.27.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1a7f83237f0d843be63c947f3c9e2aaaa90156a8 Mon Sep 17 00:00:00 2001
|
||||
From e17d27788c8368ac1d395c6e142c42249f1e02f4 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Wed, 1 May 2019 17:48:51 -0600
|
||||
Subject: [PATCH] ntdll: Find dangling symlinks quickly.
|
||||
@ -8,14 +8,14 @@ case-insensitive lookups of files.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
dlls/ntdll/directory.c | 6 +++---
|
||||
dlls/ntdll/unix/file.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
|
||||
index 669fd56cbe..95af2dde24 100644
|
||||
--- a/dlls/ntdll/directory.c
|
||||
+++ b/dlls/ntdll/directory.c
|
||||
@@ -2053,7 +2053,7 @@ static NTSTATUS find_file_in_dir( char *unix_name, int pos, const WCHAR *name, i
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index a2fc2a6425b..66ce2eb5fe4 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -2146,7 +2146,7 @@ static NTSTATUS find_file_in_dir( char *unix_name, int pos, const WCHAR *name, i
|
||||
if (ret >= 0 && ret <= MAX_DIR_ENTRY_LEN)
|
||||
{
|
||||
unix_name[pos + ret] = 0;
|
||||
@ -24,7 +24,7 @@ index 669fd56cbe..95af2dde24 100644
|
||||
{
|
||||
if (is_win_dir) *is_win_dir = is_same_file( &windir, &st );
|
||||
return STATUS_SUCCESS;
|
||||
@@ -2175,7 +2175,7 @@ not_found:
|
||||
@@ -2257,7 +2257,7 @@ not_found:
|
||||
return STATUS_OBJECT_PATH_NOT_FOUND;
|
||||
|
||||
success:
|
||||
@ -33,7 +33,7 @@ index 669fd56cbe..95af2dde24 100644
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -2580,7 +2580,7 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer
|
||||
@@ -2662,7 +2662,7 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer
|
||||
for (p = unix_name + pos ; *p; p++) if (*p == '\\') *p = '/';
|
||||
if (!name_len || !redirect || (!strstr( unix_name, "/windows/") && strncmp( unix_name, "windows/", 8 )))
|
||||
{
|
||||
@ -43,5 +43,5 @@ index 669fd56cbe..95af2dde24 100644
|
||||
if (disposition == FILE_CREATE)
|
||||
return STATUS_OBJECT_NAME_COLLISION;
|
||||
--
|
||||
2.24.1
|
||||
2.27.0
|
||||
|
||||
|
@ -1,22 +1,76 @@
|
||||
From 934a7712600b45fa584386b4ada2a73af88ee072 Mon Sep 17 00:00:00 2001
|
||||
From c8bd4fe87f7a49a3da2c53ead6df94a9172e7bbb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 26 May 2017 05:17:17 +0200
|
||||
Subject: ntdll: Implement opening files through nt device paths.
|
||||
Subject: [PATCH] ntdll: Implement opening files through nt device paths.
|
||||
|
||||
---
|
||||
dlls/ntdll/directory.c | 132 +++++++++++++++++++++++++++++++++++++---
|
||||
dlls/ntdll/tests/file.c | 25 +++++++-
|
||||
dlls/ntdll/unix/file.c | 132 +++++++++++++++++++++++++++++++++++++---
|
||||
2 files changed, 147 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
|
||||
index c6249dd8658..242dbd27b2f 100644
|
||||
--- a/dlls/ntdll/directory.c
|
||||
+++ b/dlls/ntdll/directory.c
|
||||
@@ -2732,16 +2732,10 @@ NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, ANSI_STRING *
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 184b7cdad59..87b5945a4e2 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -135,18 +135,22 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
|
||||
|
||||
static void create_file_test(void)
|
||||
{
|
||||
+ static const WCHAR notepadW[] = {'n','o','t','e','p','a','d','.','e','x','e',0};
|
||||
static const WCHAR systemrootW[] = {'\\','S','y','s','t','e','m','R','o','o','t',
|
||||
'\\','f','a','i','l','i','n','g',0};
|
||||
+ static const WCHAR systemrootExplorerW[] = {'\\','S','y','s','t','e','m','R','o','o','t',
|
||||
+ '\\','e','x','p','l','o','r','e','r','.','e','x','e',0};
|
||||
static const WCHAR questionmarkInvalidNameW[] = {'a','f','i','l','e','?',0};
|
||||
static const WCHAR pipeInvalidNameW[] = {'a','|','b',0};
|
||||
static const WCHAR pathInvalidNtW[] = {'\\','\\','?','\\',0};
|
||||
static const WCHAR pathInvalidNt2W[] = {'\\','?','?','\\',0};
|
||||
static const WCHAR pathInvalidDosW[] = {'\\','D','o','s','D','e','v','i','c','e','s','\\',0};
|
||||
static const char testdata[] = "Hello World";
|
||||
+ static const WCHAR sepW[] = {'\\',0};
|
||||
FILE_NETWORK_OPEN_INFORMATION info;
|
||||
NTSTATUS status;
|
||||
HANDLE dir, file;
|
||||
- WCHAR path[MAX_PATH];
|
||||
+ WCHAR path[MAX_PATH], temp[MAX_PATH];
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
IO_STATUS_BLOCK io;
|
||||
UNICODE_STRING nameW;
|
||||
@@ -327,6 +331,25 @@ static void create_file_test(void)
|
||||
status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
ok( status == STATUS_OBJECT_NAME_INVALID,
|
||||
"query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
+
|
||||
+ GetWindowsDirectoryW( path, MAX_PATH );
|
||||
+ path[2] = 0;
|
||||
+ ok( QueryDosDeviceW( path, temp, MAX_PATH ),
|
||||
+ "QueryDosDeviceW failed with error %u\n", GetLastError() );
|
||||
+ lstrcatW( temp, sepW );
|
||||
+ lstrcatW( temp, path+3 );
|
||||
+ lstrcatW( temp, sepW );
|
||||
+ lstrcatW( temp, notepadW );
|
||||
+
|
||||
+ pRtlInitUnicodeString( &nameW, temp );
|
||||
+ status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
+ ok( status == STATUS_SUCCESS,
|
||||
+ "query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
+
|
||||
+ pRtlInitUnicodeString( &nameW, systemrootExplorerW );
|
||||
+ status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
+ ok( status == STATUS_SUCCESS,
|
||||
+ "query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
}
|
||||
|
||||
static void open_file_test(void)
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 31a6c761c7c..83e4810f00b 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -2818,16 +2818,10 @@ NTSTATUS CDECL nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, ANSI_ST
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
- * wine_nt_to_unix_file_name (NTDLL.@) Not a Windows API
|
||||
- * nt_to_unix_file_name
|
||||
- *
|
||||
- * Convert a file name from NT namespace to Unix namespace.
|
||||
- *
|
||||
@ -25,14 +79,14 @@ index c6249dd8658..242dbd27b2f 100644
|
||||
- * returned, but the unix name is still filled in properly.
|
||||
+ * nt_to_unix_file_name_internal
|
||||
*/
|
||||
-NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
|
||||
- UINT disposition, BOOLEAN check_case )
|
||||
-NTSTATUS CDECL nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
|
||||
- UINT disposition, BOOLEAN check_case )
|
||||
+static NTSTATUS nt_to_unix_file_name_internal( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
|
||||
+ UINT disposition, BOOLEAN check_case )
|
||||
{
|
||||
static const WCHAR unixW[] = {'u','n','i','x'};
|
||||
static const WCHAR pipeW[] = {'p','i','p','e'};
|
||||
@@ -2857,6 +2851,126 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRI
|
||||
@@ -2940,6 +2934,126 @@ NTSTATUS CDECL nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *u
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -103,7 +157,7 @@ index c6249dd8658..242dbd27b2f 100644
|
||||
+}
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * wine_nt_to_unix_file_name (NTDLL.@) Not a Windows API
|
||||
+ * nt_to_unix_file_name (NTDLL.@) Not a Windows API
|
||||
+ *
|
||||
+ * Convert a file name from NT namespace to Unix namespace.
|
||||
+ *
|
||||
@ -111,7 +165,7 @@ index c6249dd8658..242dbd27b2f 100644
|
||||
+ * element doesn't have to exist; in that case STATUS_NO_SUCH_FILE is
|
||||
+ * returned, but the unix name is still filled in properly.
|
||||
+ */
|
||||
+NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
|
||||
+NTSTATUS CDECL nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret,
|
||||
+ UINT disposition, BOOLEAN check_case )
|
||||
+{
|
||||
+ static const WCHAR systemrootW[] = {'\\','S','y','s','t','e','m','R','o','o','t','\\',0};
|
||||
@ -157,62 +211,8 @@ index c6249dd8658..242dbd27b2f 100644
|
||||
+ return status;
|
||||
+}
|
||||
|
||||
/******************************************************************
|
||||
* RtlWow64EnableFsRedirection (NTDLL.@)
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 546795456a8..709698209d8 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -135,18 +135,22 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
|
||||
|
||||
static void create_file_test(void)
|
||||
{
|
||||
+ static const WCHAR notepadW[] = {'n','o','t','e','p','a','d','.','e','x','e',0};
|
||||
static const WCHAR systemrootW[] = {'\\','S','y','s','t','e','m','R','o','o','t',
|
||||
'\\','f','a','i','l','i','n','g',0};
|
||||
+ static const WCHAR systemrootExplorerW[] = {'\\','S','y','s','t','e','m','R','o','o','t',
|
||||
+ '\\','e','x','p','l','o','r','e','r','.','e','x','e',0};
|
||||
static const WCHAR questionmarkInvalidNameW[] = {'a','f','i','l','e','?',0};
|
||||
static const WCHAR pipeInvalidNameW[] = {'a','|','b',0};
|
||||
static const WCHAR pathInvalidNtW[] = {'\\','\\','?','\\',0};
|
||||
static const WCHAR pathInvalidNt2W[] = {'\\','?','?','\\',0};
|
||||
static const WCHAR pathInvalidDosW[] = {'\\','D','o','s','D','e','v','i','c','e','s','\\',0};
|
||||
static const char testdata[] = "Hello World";
|
||||
+ static const WCHAR sepW[] = {'\\',0};
|
||||
FILE_NETWORK_OPEN_INFORMATION info;
|
||||
NTSTATUS status;
|
||||
HANDLE dir, file;
|
||||
- WCHAR path[MAX_PATH];
|
||||
+ WCHAR path[MAX_PATH], temp[MAX_PATH];
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
IO_STATUS_BLOCK io;
|
||||
UNICODE_STRING nameW;
|
||||
@@ -327,6 +331,25 @@ static void create_file_test(void)
|
||||
status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
ok( status == STATUS_OBJECT_NAME_INVALID,
|
||||
"query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
+
|
||||
+ GetWindowsDirectoryW( path, MAX_PATH );
|
||||
+ path[2] = 0;
|
||||
+ ok( QueryDosDeviceW( path, temp, MAX_PATH ),
|
||||
+ "QueryDosDeviceW failed with error %u\n", GetLastError() );
|
||||
+ lstrcatW( temp, sepW );
|
||||
+ lstrcatW( temp, path+3 );
|
||||
+ lstrcatW( temp, sepW );
|
||||
+ lstrcatW( temp, notepadW );
|
||||
+
|
||||
+ pRtlInitUnicodeString( &nameW, temp );
|
||||
+ status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
+ ok( status == STATUS_SUCCESS,
|
||||
+ "query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
+
|
||||
+ pRtlInitUnicodeString( &nameW, systemrootExplorerW );
|
||||
+ status = pNtQueryFullAttributesFile( &attr, &info );
|
||||
+ ok( status == STATUS_SUCCESS,
|
||||
+ "query %s failed %x\n", wine_dbgstr_w(nameW.Buffer), status );
|
||||
}
|
||||
|
||||
static void open_file_test(void)
|
||||
/***********************************************************************
|
||||
* unmount_device
|
||||
--
|
||||
2.26.0
|
||||
2.27.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From fb9f83f9c1043dfff84c51f7223bee172c9ac40f Mon Sep 17 00:00:00 2001
|
||||
From d4166e5e9761c9a3d896486b1eb2582ca6f20482 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 27 Jul 2014 03:35:42 +0200
|
||||
Subject: [PATCH] ntdll: Allow special characters in pipe names.
|
||||
@ -6,7 +6,7 @@ Subject: [PATCH] ntdll: Allow special characters in pipe names.
|
||||
Based on patch by Valentyn Pavliuchenko.
|
||||
---
|
||||
dlls/kernel32/tests/pipe.c | 10 ++++++++++
|
||||
dlls/ntdll/directory.c | 14 ++++++++++----
|
||||
dlls/ntdll/unix/file.c | 14 ++++++++++----
|
||||
2 files changed, 20 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c
|
||||
@ -37,19 +37,19 @@ index 3c7ca06a045..453dcc80b7b 100644
|
||||
if (winetest_debug > 1) trace("test_CreateNamedPipe returning\n");
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
|
||||
index 993a661015e..aaf7c6eeed4 100644
|
||||
--- a/dlls/ntdll/directory.c
|
||||
+++ b/dlls/ntdll/directory.c
|
||||
@@ -2747,6 +2747,7 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRI
|
||||
UINT disposition, BOOLEAN check_case )
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 13096e085e8..31a6c761c7c 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -2830,6 +2830,7 @@ NTSTATUS CDECL nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *u
|
||||
UINT disposition, BOOLEAN check_case )
|
||||
{
|
||||
static const WCHAR unixW[] = {'u','n','i','x'};
|
||||
+ static const WCHAR pipeW[] = {'p','i','p','e'};
|
||||
static const WCHAR invalid_charsW[] = { INVALID_NT_CHARS, 0 };
|
||||
|
||||
NTSTATUS status = STATUS_SUCCESS;
|
||||
@@ -2757,6 +2758,7 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRI
|
||||
@@ -2839,6 +2840,7 @@ NTSTATUS CDECL nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *u
|
||||
int pos, ret, name_len, unix_len, prefix_len;
|
||||
WCHAR prefix[MAX_DIR_ENTRY_LEN + 1];
|
||||
BOOLEAN is_unix = FALSE;
|
||||
@ -57,7 +57,7 @@ index 993a661015e..aaf7c6eeed4 100644
|
||||
|
||||
name = nameW->Buffer;
|
||||
name_len = nameW->Length / sizeof(WCHAR);
|
||||
@@ -2792,13 +2794,17 @@ NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRI
|
||||
@@ -2872,13 +2874,17 @@ NTSTATUS CDECL nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *u
|
||||
name += prefix_len;
|
||||
name_len -= prefix_len;
|
||||
|
||||
@ -80,5 +80,5 @@ index 993a661015e..aaf7c6eeed4 100644
|
||||
else
|
||||
{
|
||||
--
|
||||
2.25.1
|
||||
2.27.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a660effad7b09d7333aa46f9bbef45eb4c1bed3d Mon Sep 17 00:00:00 2001
|
||||
From 74831302b4eedd6df46357de283392f2b4ee62f2 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.
|
||||
@ -14,15 +14,15 @@ is used for trapping syscalls.
|
||||
dlls/ntdll/unix/signal_x86_64.c | 105 ++++++++++++++++++++++++++++++++
|
||||
dlls/ntdll/unix/thread.c | 8 ++-
|
||||
dlls/ntdll/unix/unix_private.h | 6 +-
|
||||
dlls/ntdll/unixlib.h | 3 +-
|
||||
dlls/ntdll/unixlib.h | 5 +-
|
||||
tools/winebuild/spec32.c | 9 ++-
|
||||
7 files changed, 134 insertions(+), 6 deletions(-)
|
||||
7 files changed, 135 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 5418d1aa732..d82069e7457 100644
|
||||
index 8a76b74e83d..d67c0be3617 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -474,6 +474,7 @@ AC_CHECK_HEADERS(\
|
||||
@@ -464,6 +464,7 @@ AC_CHECK_HEADERS(\
|
||||
linux/joystick.h \
|
||||
linux/major.h \
|
||||
linux/param.h \
|
||||
@ -31,10 +31,10 @@ index 5418d1aa732..d82069e7457 100644
|
||||
linux/types.h \
|
||||
linux/ucdrom.h \
|
||||
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
|
||||
index a14e3a12ae0..a0411446e24 100644
|
||||
index 8295b7559e7..052035750cf 100644
|
||||
--- a/dlls/ntdll/thread.c
|
||||
+++ b/dlls/ntdll/thread.c
|
||||
@@ -229,6 +229,12 @@ void __wine_syscall_dispatcher( void )
|
||||
@@ -179,6 +179,12 @@ void __wine_syscall_dispatcher( void )
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -47,7 +47,7 @@ index a14e3a12ae0..a0411446e24 100644
|
||||
void *WINAPI __wine_fakedll_dispatcher( const char *module, ULONG ord )
|
||||
{
|
||||
UNICODE_STRING name;
|
||||
@@ -272,7 +278,7 @@ void *WINAPI __wine_fakedll_dispatcher( const char *module, ULONG ord )
|
||||
@@ -222,7 +228,7 @@ void *WINAPI __wine_fakedll_dispatcher( const char *module, ULONG ord )
|
||||
TEB *thread_init( SIZE_T *info_size, BOOL *suspend )
|
||||
{
|
||||
TEB *teb = unix_funcs->init_threading( &nb_threads, &__wine_ldt_copy, info_size, suspend, &server_cpus,
|
||||
@ -227,10 +227,10 @@ 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 75594832572..e42fa44f9a0 100644
|
||||
index 62e836b41f1..f234a756991 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -112,7 +112,8 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE
|
||||
@@ -111,7 +111,8 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE
|
||||
extern void CDECL server_init_process_done( void *relay ) DECLSPEC_HIDDEN;
|
||||
extern TEB * CDECL init_threading( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size,
|
||||
BOOL *suspend, unsigned int *cpus, BOOL *wow64,
|
||||
@ -240,9 +240,9 @@ index 75594832572..e42fa44f9a0 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;
|
||||
@@ -132,6 +133,9 @@ extern struct _KUSER_SHARED_DATA *user_shared_data DECLSPEC_HIDDEN;
|
||||
extern void init_environment( int argc, char *argv[], char *envp[] ) DECLSPEC_HIDDEN;
|
||||
extern DWORD ntdll_umbstowcs( const char *src, DWORD srclen, WCHAR *dst, DWORD dstlen ) DECLSPEC_HIDDEN;
|
||||
@@ -150,6 +151,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;
|
||||
|
||||
+extern unsigned int __wine_nb_syscalls DECLSPEC_HIDDEN;
|
||||
+extern void *__wine_syscall_dispatcher DECLSPEC_HIDDEN;
|
||||
@ -251,10 +251,19 @@ index 75594832572..e42fa44f9a0 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 63d0a519b74..92762e802ee 100644
|
||||
index c6fb8e0f2d4..5d00991cde9 100644
|
||||
--- a/dlls/ntdll/unixlib.h
|
||||
+++ b/dlls/ntdll/unixlib.h
|
||||
@@ -204,7 +204,8 @@ struct unix_funcs
|
||||
@@ -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
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -225,7 +225,8 @@ struct unix_funcs
|
||||
|
||||
/* thread/process functions */
|
||||
TEB * (CDECL *init_threading)( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size,
|
||||
@ -306,5 +315,5 @@ index 9cc4698d0d7..c572fe49923 100644
|
||||
put_byte( 0x08 ); put_byte( 0x03 ); put_byte( 0xfe );
|
||||
put_byte( 0x7f ); put_byte( 0x01 );
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
||||
|
@ -52,7 +52,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "22970932d014f024fcf7f0f98b1a5384b1b1eb99"
|
||||
echo "948a6a47b8dbd0ddd86cad04de03f0e4ba81b65d"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -167,7 +167,6 @@ 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"
|
||||
@ -228,14 +227,12 @@ patch_enable_all ()
|
||||
enable_server_Desktop_Refcount="$1"
|
||||
enable_server_FileEndOfFileInformation="$1"
|
||||
enable_server_File_Permissions="$1"
|
||||
enable_server_Inherited_ACLs="$1"
|
||||
enable_server_Key_State="$1"
|
||||
enable_server_Object_Types="$1"
|
||||
enable_server_PeekMessage="$1"
|
||||
enable_server_Realtime_Priority="$1"
|
||||
enable_server_Registry_Notifications="$1"
|
||||
enable_server_Signal_Thread="$1"
|
||||
enable_server_Stored_ACLs="$1"
|
||||
enable_setupapi_DiskSpaceList="$1"
|
||||
enable_setupapi_SPFILENOTIFY_FILEINCABINET="$1"
|
||||
enable_shdocvw_ParseURLFromOutsideSource_Tests="$1"
|
||||
@ -599,9 +596,6 @@ 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"
|
||||
;;
|
||||
@ -782,9 +776,6 @@ patch_enable ()
|
||||
server-File_Permissions)
|
||||
enable_server_File_Permissions="$2"
|
||||
;;
|
||||
server-Inherited_ACLs)
|
||||
enable_server_Inherited_ACLs="$2"
|
||||
;;
|
||||
server-Key_State)
|
||||
enable_server_Key_State="$2"
|
||||
;;
|
||||
@ -803,9 +794,6 @@ patch_enable ()
|
||||
server-Signal_Thread)
|
||||
enable_server_Signal_Thread="$2"
|
||||
;;
|
||||
server-Stored_ACLs)
|
||||
enable_server_Stored_ACLs="$2"
|
||||
;;
|
||||
setupapi-DiskSpaceList)
|
||||
enable_setupapi_DiskSpaceList="$2"
|
||||
;;
|
||||
@ -1608,24 +1596,6 @@ if test "$enable_server_Realtime_Priority" -eq 1; then
|
||||
enable_ntdll_ThreadTime=1
|
||||
fi
|
||||
|
||||
if test "$enable_server_Inherited_ACLs" -eq 1; then
|
||||
if test "$enable_server_Stored_ACLs" -gt 1; then
|
||||
abort "Patchset server-Stored_ACLs disabled, but server-Inherited_ACLs depends on that."
|
||||
fi
|
||||
enable_server_Stored_ACLs=1
|
||||
fi
|
||||
|
||||
if test "$enable_server_Stored_ACLs" -eq 1; then
|
||||
if test "$enable_ntdll_DOS_Attributes" -gt 1; then
|
||||
abort "Patchset ntdll-DOS_Attributes disabled, but server-Stored_ACLs depends on that."
|
||||
fi
|
||||
if test "$enable_server_File_Permissions" -gt 1; then
|
||||
abort "Patchset server-File_Permissions disabled, but server-Stored_ACLs depends on that."
|
||||
fi
|
||||
enable_ntdll_DOS_Attributes=1
|
||||
enable_server_File_Permissions=1
|
||||
fi
|
||||
|
||||
if test "$enable_server_Desktop_Refcount" -eq 1; then
|
||||
if test "$enable_ws2_32_WSACleanup" -gt 1; then
|
||||
abort "Patchset ws2_32-WSACleanup disabled, but server-Desktop_Refcount depends on that."
|
||||
@ -1704,13 +1674,6 @@ if test "$enable_ntdll_Hide_Wine_Exports" -eq 1; then
|
||||
enable_ntdll_ThreadTime=1
|
||||
fi
|
||||
|
||||
if test "$enable_ntdll_DOS_Attributes" -eq 1; then
|
||||
if test "$enable_ntdll_Junction_Points" -gt 1; then
|
||||
abort "Patchset ntdll-Junction_Points disabled, but ntdll-DOS_Attributes depends on that."
|
||||
fi
|
||||
enable_ntdll_Junction_Points=1
|
||||
fi
|
||||
|
||||
if test "$enable_ntdll_Builtin_Prot" -eq 1; then
|
||||
if test "$enable_ntdll_WRITECOPY" -gt 1; then
|
||||
abort "Patchset ntdll-WRITECOPY disabled, but ntdll-Builtin_Prot depends on that."
|
||||
@ -3214,7 +3177,7 @@ fi
|
||||
# | * [#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/directory.c, dlls/ntdll/file.c, dlls/ntdll/tests/file.c,
|
||||
# | * 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
|
||||
# |
|
||||
@ -3719,40 +3682,6 @@ if test "$enable_ntdll_CriticalSection" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntdll-DOS_Attributes
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * ntdll-Junction_Points
|
||||
# |
|
||||
# | 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/directory.c, dlls/ntdll/file.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/tests/directory.c,
|
||||
# | dlls/ntdll/tests/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-NtQuery.patch
|
||||
patch_apply ntdll-DOS_Attributes/0002-ntdll-Implement-retrieving-DOS-attributes-in-NtQuery.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 NtQueryInformationFile.", 1 },';
|
||||
printf '%s\n' '+ { "Erich E. Hoover", "ntdll: Implement retrieving DOS attributes in NtQuery[Full]AttributesFile and NtQueryDirectoryFile.", 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:
|
||||
@ -3972,7 +3901,7 @@ fi
|
||||
# | * [#28995] Allow special characters in pipe names
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/directory.c
|
||||
# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/unix/file.c
|
||||
# |
|
||||
if test "$enable_ntdll_Pipe_SpecialCharacters" -eq 1; then
|
||||
patch_apply ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch
|
||||
@ -3990,7 +3919,7 @@ fi
|
||||
# | * [#37487] Resolve \\SystemRoot\\ prefix when opening files
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ntdll/directory.c, dlls/ntdll/tests/file.c
|
||||
# | * dlls/ntdll/tests/file.c, dlls/ntdll/unix/file.c
|
||||
# |
|
||||
if test "$enable_ntdll_NtDevicePath" -eq 1; then
|
||||
patch_apply ntdll-NtDevicePath/0001-ntdll-Implement-opening-files-through-nt-device-path.patch
|
||||
@ -4677,52 +4606,6 @@ if test "$enable_server_FileEndOfFileInformation" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-Stored_ACLs
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * ntdll-Junction_Points, ntdll-DOS_Attributes, server-File_Permissions
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#33576] Support for stored file ACLs
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/advapi32/tests/security.c, include/wine/port.h, server/change.c, server/file.c, server/file.h, server/object.c,
|
||||
# | server/object.h
|
||||
# |
|
||||
if test "$enable_server_Stored_ACLs" -eq 1; then
|
||||
patch_apply server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch
|
||||
patch_apply server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch
|
||||
patch_apply server-Stored_ACLs/0003-server-Add-a-helper-function-set_sd_from_token_inter.patch
|
||||
patch_apply server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch
|
||||
patch_apply server-Stored_ACLs/0005-server-Store-file-security-attributes-with-extended-.patch
|
||||
patch_apply server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch
|
||||
patch_apply server-Stored_ACLs/0007-server-Retrieve-file-security-attributes-with-extend.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Erich E. Hoover", "server: Unify the storage of security attributes for files and directories.", 7 },';
|
||||
printf '%s\n' '+ { "Erich E. Hoover", "server: Unify the retrieval of security attributes for files and directories.", 7 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "server: Add a helper function set_sd_from_token_internal to merge two security descriptors.", 1 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "server: Temporarily store the full security descriptor for file objects.", 1 },';
|
||||
printf '%s\n' '+ { "Erich E. Hoover", "server: Store file security attributes with extended file attributes.", 8 },';
|
||||
printf '%s\n' '+ { "Erich E. Hoover", "server: Convert return of file security masks with generic access mappings.", 7 },';
|
||||
printf '%s\n' '+ { "Erich E. Hoover", "server: Retrieve file security attributes with extended file attributes.", 7 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-Inherited_ACLs
|
||||
# |
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * ntdll-Junction_Points, ntdll-DOS_Attributes, server-File_Permissions, server-Stored_ACLs
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/advapi32/tests/security.c, server/file.c
|
||||
# |
|
||||
if test "$enable_server_Inherited_ACLs" -eq 1; then
|
||||
patch_apply server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Erich E. Hoover", "server: Inherit security attributes from parent directories on creation.", 7 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-Key_State
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -6644,6 +6527,7 @@ 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 },';
|
||||
@ -6660,6 +6544,7 @@ 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
|
||||
|
||||
|
@ -1,2 +1,4 @@
|
||||
Depends: server-Stored_ACLs
|
||||
Fixes: Support for inherited file ACLs
|
||||
# Re-enable me when ntdll-DOS_Attributes gets re-enabled!
|
||||
Disabled: true
|
||||
|
@ -1,3 +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!
|
||||
Disabled: true
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 531ffc16d33f96bfeb65973efd1cdbd22fb6a32f Mon Sep 17 00:00:00 2001
|
||||
From 607a86f034677449a7fa4628ec2df013b65bfa90 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,10 +22,10 @@ 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 2553b0b9d39..cac6aae2f3d 100644
|
||||
index c2e65c94abc..0f9fe76e9af 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -4021,6 +4021,7 @@ PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule)
|
||||
@@ -3812,6 +3812,7 @@ PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ index 2553b0b9d39..cac6aae2f3d 100644
|
||||
|
||||
/******************************************************************
|
||||
* LdrInitializeThunk (NTDLL.@)
|
||||
@@ -4038,6 +4039,8 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
|
||||
@@ -3828,6 +3829,8 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
|
||||
WINE_MODREF *wm;
|
||||
LPCWSTR load_path = NtCurrentTeb()->Peb->ProcessParameters->DllPath.Buffer;
|
||||
|
||||
@ -65,7 +65,7 @@ index 21cc1b3ead4..18be5693a7d 100644
|
||||
}
|
||||
return unix_funcs->NtGetContextThread( handle, context );
|
||||
diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
|
||||
index 1389a542cde..54796476e25 100644
|
||||
index a5e6faa461a..51938bf84cc 100644
|
||||
--- a/dlls/ntdll/tests/exception.c
|
||||
+++ b/dlls/ntdll/tests/exception.c
|
||||
@@ -1643,6 +1643,8 @@ static void test_thread_context(void)
|
||||
@ -78,10 +78,10 @@ index 1389a542cde..54796476e25 100644
|
||||
ok( context.SegCs == LOWORD(expect.SegCs), "wrong SegCs %08x/%08x\n", context.SegCs, expect.SegCs );
|
||||
ok( context.SegDs == LOWORD(expect.SegDs), "wrong SegDs %08x/%08x\n", context.SegDs, expect.SegDs );
|
||||
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
|
||||
index ff5fe9d6226..e93498b27ea 100644
|
||||
index 5a6809638ae..c6988ce08e3 100644
|
||||
--- a/dlls/ntdll/thread.c
|
||||
+++ b/dlls/ntdll/thread.c
|
||||
@@ -220,6 +220,14 @@ int __cdecl __wine_dbg_output( const char *str )
|
||||
@@ -170,6 +170,14 @@ int __cdecl __wine_dbg_output( const char *str )
|
||||
return unix_funcs->dbg_output( str );
|
||||
}
|
||||
|
||||
@ -96,7 +96,7 @@ index ff5fe9d6226..e93498b27ea 100644
|
||||
|
||||
/***********************************************************************
|
||||
* thread_init
|
||||
@@ -231,7 +239,7 @@ int __cdecl __wine_dbg_output( const char *str )
|
||||
@@ -181,7 +189,7 @@ int __cdecl __wine_dbg_output( const char *str )
|
||||
TEB *thread_init( SIZE_T *info_size, BOOL *suspend )
|
||||
{
|
||||
TEB *teb = unix_funcs->init_threading( &nb_threads, &__wine_ldt_copy, info_size, suspend, &server_cpus,
|
||||
@ -127,10 +127,10 @@ 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 e26a64fdac0..e93d8f21d10 100644
|
||||
index abedfc316ae..62d0c115026 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -112,7 +112,7 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE
|
||||
@@ -111,7 +111,7 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE
|
||||
extern void CDECL server_init_process_done( void *relay ) DECLSPEC_HIDDEN;
|
||||
extern TEB * CDECL init_threading( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size,
|
||||
BOOL *suspend, unsigned int *cpus, BOOL *wow64,
|
||||
@ -140,19 +140,19 @@ index e26a64fdac0..e93d8f21d10 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 768ab5b006c..63d0a519b74 100644
|
||||
index 873cc7abdf2..c6fb8e0f2d4 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 41
|
||||
+#define NTDLL_UNIXLIB_VERSION 42
|
||||
-#define NTDLL_UNIXLIB_VERSION 44
|
||||
+#define NTDLL_UNIXLIB_VERSION 45
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -204,7 +204,7 @@ struct unix_funcs
|
||||
@@ -225,7 +225,7 @@ struct unix_funcs
|
||||
|
||||
/* thread/process functions */
|
||||
TEB * (CDECL *init_threading)( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size,
|
||||
@ -162,10 +162,10 @@ index 768ab5b006c..63d0a519b74 100644
|
||||
void (CDECL *exit_process)( int status );
|
||||
NTSTATUS (CDECL *get_thread_ldt_entry)( HANDLE handle, void *data, ULONG len, ULONG *ret_len );
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index 2d9f54b89d8..0c15a0ee6c3 100644
|
||||
index 04e5dd1f62f..2b9a12cbb31 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -360,7 +360,7 @@ typedef struct _TEB
|
||||
@@ -359,7 +359,7 @@ typedef struct _TEB
|
||||
PVOID CsrClientThread; /* 03c/0070 */
|
||||
PVOID Win32ThreadInfo; /* 040/0078 */
|
||||
ULONG Win32ClientInfo[31]; /* 044/0080 used for user32 private data in Wine */
|
||||
@ -559,5 +559,5 @@ index 2a1fc960926..07a579004ad 100644
|
||||
+ return j + 1;
|
||||
+}
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 9c83eae2b95981ba4ca812bacbf116eaf412a218 Mon Sep 17 00:00:00 2001
|
||||
From 6de6fba2c1135044da2a9958df07772f00784de5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 5 Nov 2015 14:33:48 +0100
|
||||
Subject: [PATCH] winex11.drv: Allow to select default display frequency in
|
||||
@ -17,7 +17,7 @@ HKCU\Software\Wine\X11 Driver\DefaultDisplayFrequency
|
||||
3 files changed, 44 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.c
|
||||
index c3f31d0430d..5e01b31106e 100644
|
||||
index bbbb6fdf0a3..82120cdbc2a 100644
|
||||
--- a/dlls/winex11.drv/settings.c
|
||||
+++ b/dlls/winex11.drv/settings.c
|
||||
@@ -378,7 +378,7 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode,
|
||||
@ -43,7 +43,7 @@ index c3f31d0430d..5e01b31106e 100644
|
||||
}
|
||||
- if ((devmode->dmFields & DM_DISPLAYFREQUENCY) && (dd_modes[i].refresh_rate != 0) &&
|
||||
+ if ((devmode->dmFields & DM_DISPLAYFREQUENCY) &&
|
||||
devmode->dmDisplayFrequency != 0)
|
||||
devmode->dmDisplayFrequency != 0 && devmode->dmDisplayFrequency != 1)
|
||||
{
|
||||
- if (devmode->dmDisplayFrequency != dd_modes[i].refresh_rate)
|
||||
+ if (dd_modes[i].refresh_rate != 0 &&
|
||||
@ -109,10 +109,10 @@ index c3f31d0430d..5e01b31106e 100644
|
||||
+ return DISP_CHANGE_SUCCESSFUL;
|
||||
}
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index c2c845503e6..85a1a46788b 100644
|
||||
index a9eaed20cab..76e1344a616 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -403,6 +403,7 @@ extern BOOL private_color_map DECLSPEC_HIDDEN;
|
||||
@@ -404,6 +404,7 @@ extern BOOL private_color_map DECLSPEC_HIDDEN;
|
||||
extern int primary_monitor DECLSPEC_HIDDEN;
|
||||
extern int copy_default_colors DECLSPEC_HIDDEN;
|
||||
extern int alloc_system_colors DECLSPEC_HIDDEN;
|
||||
@ -121,7 +121,7 @@ index c2c845503e6..85a1a46788b 100644
|
||||
extern HMODULE x11drv_module DECLSPEC_HIDDEN;
|
||||
extern char *process_name DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
||||
index f08ac92e36f..f9fe5234c57 100644
|
||||
index e6e61e801e1..6b82784c5f9 100644
|
||||
--- a/dlls/winex11.drv/x11drv_main.c
|
||||
+++ b/dlls/winex11.drv/x11drv_main.c
|
||||
@@ -85,6 +85,7 @@ BOOL client_side_with_render = TRUE;
|
||||
@ -132,7 +132,7 @@ index f08ac92e36f..f9fe5234c57 100644
|
||||
DWORD thread_data_tls_index = TLS_OUT_OF_INDEXES;
|
||||
int xrender_error_base = 0;
|
||||
HMODULE x11drv_module = 0;
|
||||
@@ -437,6 +438,9 @@ static void setup_options(void)
|
||||
@@ -435,6 +436,9 @@ static void setup_options(void)
|
||||
if (!get_config_key( hkey, appkey, "AllocSystemColors", buffer, sizeof(buffer) ))
|
||||
alloc_system_colors = atoi(buffer);
|
||||
|
||||
@ -143,5 +143,5 @@ index f08ac92e36f..f9fe5234c57 100644
|
||||
|
||||
if (appkey) RegCloseKey( appkey );
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b8b29d74bc946a359d9296a051371b78f88570d5 Mon Sep 17 00:00:00 2001
|
||||
From 85887cf68b055ca7149a428b32e9cac31e2190ca 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
|
||||
@ -17,10 +17,10 @@ Subject: [PATCH] ws2_32: Invalidate client-side file descriptor cache in
|
||||
9 files changed, 36 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index a9422723b71..e4f2f0e9c2b 100644
|
||||
index 0b0d4587969..99d4c57cdfe 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -1578,6 +1578,7 @@
|
||||
@@ -1577,6 +1577,7 @@
|
||||
|
||||
# Server interface
|
||||
@ cdecl -norelay wine_server_call(ptr)
|
||||
@ -48,11 +48,11 @@ index 9e1cc85a36e..3f4ba60b7bb 100644
|
||||
/***********************************************************************
|
||||
* wine_server_release_fd (NTDLL.@)
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index 370a57dea9e..29d7c1c681c 100644
|
||||
index b09049b855b..bd37b8362b0 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -927,6 +927,7 @@ static struct unix_funcs unix_funcs =
|
||||
get_thread_ldt_entry,
|
||||
@@ -937,6 +937,7 @@ static struct unix_funcs unix_funcs =
|
||||
fork_and_exec,
|
||||
wine_server_call,
|
||||
server_send_fd,
|
||||
+ server_remove_fds_from_cache_by_type,
|
||||
@ -60,10 +60,10 @@ index 370a57dea9e..29d7c1c681c 100644
|
||||
server_fd_to_handle,
|
||||
server_handle_to_fd,
|
||||
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
|
||||
index 5faca657783..2e278480896 100644
|
||||
index cf6f6c3832c..586d0ffcf72 100644
|
||||
--- a/dlls/ntdll/unix/server.c
|
||||
+++ b/dlls/ntdll/unix/server.c
|
||||
@@ -1003,6 +1003,26 @@ static int remove_fd_from_cache( HANDLE handle )
|
||||
@@ -995,6 +995,26 @@ static int remove_fd_from_cache( HANDLE handle )
|
||||
return fd;
|
||||
}
|
||||
|
||||
@ -91,10 +91,10 @@ index 5faca657783..2e278480896 100644
|
||||
/***********************************************************************
|
||||
* server_get_unix_fd
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index d2586556f6e..e26a64fdac0 100644
|
||||
index e82b0960343..673d01c6bf9 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -100,6 +100,7 @@ extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN;
|
||||
@@ -99,6 +99,7 @@ extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN;
|
||||
extern void CDECL virtual_set_large_address_space(void) DECLSPEC_HIDDEN;
|
||||
|
||||
extern void CDECL server_send_fd( int fd ) DECLSPEC_HIDDEN;
|
||||
@ -103,19 +103,19 @@ index d2586556f6e..e26a64fdac0 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 54705b7f6d2..768ab5b006c 100644
|
||||
index 958fab4c059..873cc7abdf2 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 40
|
||||
+#define NTDLL_UNIXLIB_VERSION 41
|
||||
-#define NTDLL_UNIXLIB_VERSION 43
|
||||
+#define NTDLL_UNIXLIB_VERSION 44
|
||||
|
||||
struct unix_funcs
|
||||
{
|
||||
@@ -212,6 +212,7 @@ struct unix_funcs
|
||||
@@ -239,6 +239,7 @@ struct unix_funcs
|
||||
/* server functions */
|
||||
unsigned int (CDECL *server_call)( void *req_ptr );
|
||||
void (CDECL *server_send_fd)( int fd );
|
||||
@ -164,5 +164,5 @@ index ac5dcc6f8bc..5cf52887516 100644
|
||||
/* do a server call and set the last error code */
|
||||
static inline unsigned int wine_server_call_err( void *req_ptr )
|
||||
--
|
||||
2.26.2
|
||||
2.27.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From fa4b6d66242136e922620295da4a22a7431d17fe Mon Sep 17 00:00:00 2001
|
||||
From 1528db6daac145ca3444b432382c8e4b8fd15a5d Mon Sep 17 00:00:00 2001
|
||||
From: Ethan Lee <elee@codeweavers.com>
|
||||
Date: Wed, 22 Jan 2020 00:12:10 +0000
|
||||
Subject: [PATCH] include: Add xact3.idl
|
||||
@ -7,15 +7,14 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
include/Makefile.in | 1 +
|
||||
include/xact3.idl | 533 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/xact3wb.h | 2 +
|
||||
3 files changed, 536 insertions(+)
|
||||
2 files changed, 534 insertions(+)
|
||||
create mode 100644 include/xact3.idl
|
||||
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index ce0f6fc433..faba1622d9 100644
|
||||
index 9f70e72b4c7..200d4a69423 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -784,6 +784,7 @@ SOURCES = \
|
||||
@@ -802,6 +802,7 @@ SOURCES = \
|
||||
wtypes.idl \
|
||||
wuapi.idl \
|
||||
x3daudio.h \
|
||||
@ -25,7 +24,7 @@ index ce0f6fc433..faba1622d9 100644
|
||||
xapofx.h \
|
||||
diff --git a/include/xact3.idl b/include/xact3.idl
|
||||
new file mode 100644
|
||||
index 0000000000..c49718ff39
|
||||
index 00000000000..c49718ff393
|
||||
--- /dev/null
|
||||
+++ b/include/xact3.idl
|
||||
@@ -0,0 +1,533 @@
|
||||
@ -562,19 +561,6 @@ index 0000000000..c49718ff39
|
||||
+
|
||||
+ HRESULT GetProperties(XACT_WAVE_INSTANCE_PROPERTIES *pProperties);
|
||||
+}
|
||||
diff --git a/include/xact3wb.h b/include/xact3wb.h
|
||||
index b4c5a53d40..130efc9745 100644
|
||||
--- a/include/xact3wb.h
|
||||
+++ b/include/xact3wb.h
|
||||
@@ -18,6 +18,8 @@
|
||||
#ifndef __XACT3WB_H__
|
||||
#define __XACT3WB_H__
|
||||
|
||||
+#define WAVEBANK_ENTRYNAME_LENGTH 64
|
||||
+
|
||||
typedef union WAVEBANKMINIWAVEFORMAT
|
||||
{
|
||||
struct
|
||||
--
|
||||
2.25.1
|
||||
2.27.0
|
||||
|
||||
|
@ -0,0 +1,26 @@
|
||||
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
|
||||
|
@ -1 +1 @@
|
||||
22970932d014f024fcf7f0f98b1a5384b1b1eb99
|
||||
948a6a47b8dbd0ddd86cad04de03f0e4ba81b65d
|
||||
|
Loading…
Reference in New Issue
Block a user