Rebase against a87bafc5b92c9f2deaa399e32a8ec42d28f7ea45.

This commit is contained in:
Alistair Leslie-Hughes 2021-08-25 09:53:24 +10:00
parent 5c01355ada
commit 5a5c5a5743
6 changed files with 27 additions and 190 deletions

View File

@ -1,144 +0,0 @@
From cca287da02e2946705ad89f6e8c052b68199ad31 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 1 Jun 2021 17:15:44 +1000
Subject: [PATCH v3] dpnet: Implement IDirectPlay8Server EnumServiceProviders
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/dpnet/server.c | 14 ++++++-
dlls/dpnet/tests/server.c | 86 +++++++++++++++++++++++++++++++++++++++
2 files changed, 98 insertions(+), 2 deletions(-)
diff --git a/dlls/dpnet/server.c b/dlls/dpnet/server.c
index 977771697ac..26dd76388b1 100644
--- a/dlls/dpnet/server.c
+++ b/dlls/dpnet/server.c
@@ -126,9 +126,19 @@ static HRESULT WINAPI IDirectPlay8ServerImpl_EnumServiceProviders(IDirectPlay8Se
PDWORD pcReturned, DWORD dwFlags)
{
IDirectPlay8ServerImpl *This = impl_from_IDirectPlay8Server(iface);
- FIXME("(%p)->(%s %s %p %p %p %d)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
+ TRACE("(%p)->(%s %s %p %p %p %d)\n", This, debugstr_guid(pguidServiceProvider), debugstr_guid(pguidApplication),
pSPInfoBuffer, pcbEnumData, pcReturned, dwFlags);
- return E_NOTIMPL;
+
+ if(!This->msghandler)
+ return DPNERR_UNINITIALIZED;
+
+ if(dwFlags)
+ FIXME("Unhandled flags %x\n", dwFlags);
+
+ if(pguidApplication)
+ FIXME("Application guid %s is currently being ignored\n", debugstr_guid(pguidApplication));
+
+ return enum_services_providers(pguidServiceProvider, pSPInfoBuffer, pcbEnumData, pcReturned);
}
static HRESULT WINAPI IDirectPlay8ServerImpl_CancelAsyncOperation(IDirectPlay8Server *iface, DPNHANDLE hAsyncHandle, DWORD dwFlags)
diff --git a/dlls/dpnet/tests/server.c b/dlls/dpnet/tests/server.c
index 74a0e5adfcf..ae7e876522d 100644
--- a/dlls/dpnet/tests/server.c
+++ b/dlls/dpnet/tests/server.c
@@ -184,6 +184,91 @@ static void test_server_info(void)
}
}
+static void test_enum_service_providers(void)
+{
+ DPN_SERVICE_PROVIDER_INFO *serv_prov_info;
+ IDirectPlay8Server *server = NULL;
+ DWORD items, size;
+ DWORD i;
+ HRESULT hr;
+
+ hr = CoCreateInstance( &CLSID_DirectPlay8Server, NULL, CLSCTX_ALL, &IID_IDirectPlay8Server, (LPVOID*)&server);
+ ok(hr == S_OK, "Failed to create IDirectPlay8Server object\n");
+ if (FAILED(hr))
+ return;
+
+ size = 0;
+ items = 0;
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, serv_prov_info, &size, &items, 0);
+ ok(hr == DPNERR_UNINITIALIZED, "got %x\n", hr);
+
+ hr = IDirectPlay8Server_Initialize(server, NULL, DirectPlayMessageHandler, 0);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ if (FAILED(hr))
+ {
+ IDirectPlay8Server_Release(server);
+ return;
+ }
+
+ size = 0;
+ items = 0;
+
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, NULL, &size, NULL, 0);
+ ok(hr == E_POINTER, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
+
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, NULL, NULL, &items, 0);
+ ok(hr == E_POINTER, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
+
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, NULL, &size, &items, 0);
+ ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
+ ok(size != 0, "size is unexpectedly 0\n");
+
+ serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size);
+
+ hr = IDirectPlay8Server_EnumServiceProviders(server, NULL, NULL, serv_prov_info, &size, &items, 0);
+ ok(hr == S_OK, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
+ ok(items != 0, "Found unexpectedly no service providers\n");
+
+ trace("number of items found: %d\n", items);
+
+ for (i=0;i<items;i++)
+ {
+ trace("Found Service Provider: %s\n", wine_dbgstr_w(serv_prov_info[i].pwszName));
+ trace("Found guid: %s\n", wine_dbgstr_guid(&serv_prov_info[i].guid));
+ }
+
+ ok(HeapFree(GetProcessHeap(), 0, serv_prov_info), "Failed freeing server provider info\n");
+
+ size = 0;
+ items = 0;
+
+ hr = IDirectPlay8Server_EnumServiceProviders(server, &CLSID_DP8SP_TCPIP, NULL, NULL, &size, &items, 0);
+ ok(hr == DPNERR_BUFFERTOOSMALL, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
+ ok(size != 0, "size is unexpectedly 0\n");
+
+ serv_prov_info = HeapAlloc(GetProcessHeap(), 0, size);
+
+ hr = IDirectPlay8Server_EnumServiceProviders(server, &CLSID_DP8SP_TCPIP, NULL, serv_prov_info, &size, &items, 0);
+ ok(hr == S_OK, "IDirectPlay8Server_EnumServiceProviders failed with %x\n", hr);
+ ok(items != 0, "Found unexpectedly no adapter\n");
+
+
+ for (i=0;i<items;i++)
+ {
+ trace("Found adapter: %s\n", wine_dbgstr_w(serv_prov_info[i].pwszName));
+ trace("Found adapter guid: %s\n", wine_dbgstr_guid(&serv_prov_info[i].guid));
+ }
+
+ /* Invalid GUID */
+ items = 88;
+ hr = IDirectPlay8Server_EnumServiceProviders(server, &appguid, NULL, serv_prov_info, &size, &items, 0);
+ ok(hr == DPNERR_DOESNOTEXIST, "IDirectPlay8Peer_EnumServiceProviders failed with %x\n", hr);
+ ok(items == 88, "Found adapter %d\n", items);
+
+ HeapFree(GetProcessHeap(), 0, serv_prov_info);
+ IDirectPlay8Server_Release(server);
+}
+
BOOL is_process_elevated(void)
{
HANDLE token;
@@ -398,6 +483,7 @@ START_TEST(server)
create_server();
test_server_info();
+ test_enum_service_providers();
CoUninitialize();
--
2.30.2

View File

@ -1 +0,0 @@
Fixes: [51221] dpnet: Impelment IDirectPlay8Server EnumServiceProviders.

View File

@ -1,4 +1,4 @@
From 723ccff12d0b9516490e34519e244a6486d11b8b Mon Sep 17 00:00:00 2001
From f8f619802b42448514fdab786a2c593658c33625 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Wed, 13 Jun 2018 10:44:49 -0500
Subject: [PATCH] configure: Check for sys/eventfd.h, ppoll(), and shm_open().
@ -13,10 +13,10 @@ Although perhaps we shouldn't since the server doesn't do this.
3 files changed, 89 insertions(+)
diff --git a/configure b/configure
index 5672688a0d7..24ae489c3a9 100755
index c9418c0f225..65a20ef25c8 100755
--- a/configure
+++ b/configure
@@ -7467,6 +7467,7 @@ for ac_header in \
@@ -7543,6 +7543,7 @@ for ac_header in \
sys/cdio.h \
sys/epoll.h \
sys/event.h \
@ -24,15 +24,15 @@ index 5672688a0d7..24ae489c3a9 100755
sys/filio.h \
sys/ioctl.h \
sys/ipc.h \
@@ -17815,6 +17816,7 @@ for ac_func in \
pipe2 \
@@ -18011,6 +18012,7 @@ for ac_func in \
poll \
port_create \
posix_fadvise \
+ ppoll \
prctl \
pread \
proc_pidinfo \
@@ -18224,6 +18226,72 @@ fi
@@ -18411,6 +18413,72 @@ fi
;;
esac
@ -106,10 +106,10 @@ index 5672688a0d7..24ae489c3a9 100755
then
if ${LDAP_CFLAGS:+false} :; then :
diff --git a/configure.ac b/configure.ac
index 7a03cbc1cab..bfa64a8d68a 100644
index a7c3be91b7e..0845cc83554 100644
--- a/configure.ac
+++ b/configure.ac
@@ -494,6 +494,7 @@ AC_CHECK_HEADERS(\
@@ -512,6 +512,7 @@ AC_CHECK_HEADERS(\
sys/cdio.h \
sys/epoll.h \
sys/event.h \
@ -117,15 +117,15 @@ index 7a03cbc1cab..bfa64a8d68a 100644
sys/filio.h \
sys/ioctl.h \
sys/ipc.h \
@@ -2207,6 +2208,7 @@ AC_CHECK_FUNCS(\
pipe2 \
@@ -2216,6 +2217,7 @@ AC_CHECK_FUNCS(\
poll \
port_create \
posix_fadvise \
+ ppoll \
prctl \
pread \
proc_pidinfo \
@@ -2271,6 +2273,16 @@ case $host_os in
@@ -2272,6 +2274,16 @@ case $host_os in
;;
esac
@ -143,12 +143,12 @@ index 7a03cbc1cab..bfa64a8d68a 100644
if test "x$with_ldap" != "xno"
then
diff --git a/include/config.h.in b/include/config.h.in
index 4adb6325e14..6f1323311d9 100644
index 2b488894a49..1b3ab9f9580 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -687,6 +687,9 @@
/* Define to 1 if you have the <port.h> header file. */
#undef HAVE_PORT_H
@@ -516,6 +516,9 @@
/* Define to 1 if you have the `posix_fadvise' function. */
#undef HAVE_POSIX_FADVISE
+/* Define to 1 if you have the `ppoll' function. */
+#undef HAVE_PPOLL
@ -156,7 +156,7 @@ index 4adb6325e14..6f1323311d9 100644
/* Define to 1 if you have the `prctl' function. */
#undef HAVE_PRCTL
@@ -804,6 +807,9 @@
@@ -600,6 +603,9 @@
/* Define to 1 if `interface_id' is a member of `sg_io_hdr_t'. */
#undef HAVE_SG_IO_HDR_T_INTERFACE_ID
@ -166,7 +166,7 @@ index 4adb6325e14..6f1323311d9 100644
/* Define if sigaddset is supported */
#undef HAVE_SIGADDSET
@@ -1004,6 +1010,9 @@
@@ -767,6 +773,9 @@
/* Define to 1 if you have the <sys/epoll.h> header file. */
#undef HAVE_SYS_EPOLL_H
@ -177,5 +177,5 @@ index 4adb6325e14..6f1323311d9 100644
#undef HAVE_SYS_EVENT_H
--
2.28.0
2.32.0

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "f33bf35d9a395a17e83b4bf512c5434368a8218e"
echo "a87bafc5b92c9f2deaa399e32a8ec42d28f7ea45"
}
# Show version information
@ -116,7 +116,6 @@ patch_enable_all ()
enable_dinput_joy_mappings="$1"
enable_dinput_reconnect_joystick="$1"
enable_dinput_remap_joystick="$1"
enable_dpnet_Server_EnumServiceProviders="$1"
enable_dsound_EAX="$1"
enable_dsound_Fast_Mixer="$1"
enable_dwrite_FontFallback="$1"
@ -389,9 +388,6 @@ patch_enable ()
dinput-remap-joystick)
enable_dinput_remap_joystick="$2"
;;
dpnet-Server-EnumServiceProviders)
enable_dpnet_Server_EnumServiceProviders="$2"
;;
dsound-EAX)
enable_dsound_EAX="$2"
;;
@ -1869,18 +1865,6 @@ if test "$enable_dinput_remap_joystick" -eq 1; then
patch_apply dinput-remap-joystick/0001-dinput-Allow-remapping-of-joystick-buttons.patch
fi
# Patchset dpnet-Server-EnumServiceProviders
# |
# | This patchset fixes the following Wine bugs:
# | * [#51221] dpnet: Impelment IDirectPlay8Server EnumServiceProviders.
# |
# | Modified files:
# | * dlls/dpnet/server.c, dlls/dpnet/tests/server.c
# |
if test "$enable_dpnet_Server_EnumServiceProviders" -eq 1; then
patch_apply dpnet-Server-EnumServiceProviders/0001-dpnet-Implement-IDirectPlay8Server-EnumServicePro.patch
fi
# Patchset dsound-Fast_Mixer
# |
# | This patchset fixes the following Wine bugs:

View File

@ -1,18 +1,18 @@
From eac7d559f3a0dd0ab5b05a1ff461c619e6faa2d5 Mon Sep 17 00:00:00 2001
From b08427ea0575faf213100269bf5bc931ec05930b Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 21 May 2021 21:52:06 -0500
Subject: [PATCH] ntdll: Always start the initial process through start.exe.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
---
dlls/ntdll/unix/env.c | 21 +++------------------
1 file changed, 3 insertions(+), 18 deletions(-)
dlls/ntdll/unix/env.c | 19 +++----------------
1 file changed, 3 insertions(+), 16 deletions(-)
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c
index 837725dd0d1..ed844e26593 100644
index ae1afb2797b..02af2c5ca5a 100644
--- a/dlls/ntdll/unix/env.c
+++ b/dlls/ntdll/unix/env.c
@@ -2039,6 +2039,7 @@ static void init_peb( RTL_USER_PROCESS_PARAMETERS *params, void *module )
@@ -2116,6 +2116,7 @@ static void init_peb( RTL_USER_PROCESS_PARAMETERS *params, void *module )
*/
static RTL_USER_PROCESS_PARAMETERS *build_initial_params( void **module )
{
@ -20,7 +20,7 @@ index 837725dd0d1..ed844e26593 100644
static const WCHAR valueW[] = {'1',0};
static const WCHAR pathW[] = {'P','A','T','H'};
RTL_USER_PROCESS_PARAMETERS *params = NULL;
@@ -2067,24 +2068,8 @@ static RTL_USER_PROCESS_PARAMETERS *build_initial_params( void **module )
@@ -2144,22 +2145,8 @@ static RTL_USER_PROCESS_PARAMETERS *build_initial_params( void **module )
add_registry_environment( &env, &env_pos, &env_size );
env[env_pos++] = 0;
@ -28,8 +28,6 @@ index 837725dd0d1..ed844e26593 100644
- if (!status)
- {
- if (main_image_info.ImageCharacteristics & IMAGE_FILE_DLL) status = STATUS_INVALID_IMAGE_FORMAT;
- if (main_image_info.ImageFlags & IMAGE_FLAGS_ComPlusNativeReady)
- main_image_info.Machine = native_machine;
- if (main_image_info.Machine != current_machine) status = STATUS_INVALID_IMAGE_FORMAT;
- }
-
@ -48,5 +46,5 @@ index 837725dd0d1..ed844e26593 100644
main_wargv = build_wargv( get_dos_path( image ));
cmdline = build_command_line( main_wargv );
--
2.30.2
2.32.0

View File

@ -1 +1 @@
f33bf35d9a395a17e83b4bf512c5434368a8218e
a87bafc5b92c9f2deaa399e32a8ec42d28f7ea45