From 593249dcdecb74d83c742f9a2c8190e322c45d76 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Sat, 22 Jun 2024 17:37:43 +1000 Subject: [PATCH] Rebase against 6c5d17af07a318d754c0c21023b2d162a0d3725d. --- ...launching-programs-based-on-file-ass.patch | 12 ++++---- ...pe-failed-to-clear-file-associations.patch | 22 +++++++-------- ...d-support-for-reading-reparse-points.patch | 25 ++++++++--------- ...hardware_message-flags-for-rawinput-.patch | 28 +++++++++---------- staging/upstream-commit | 2 +- 5 files changed, 44 insertions(+), 45 deletions(-) diff --git a/patches/cmd-launch-association/0001-cmd-Support-for-launching-programs-based-on-file-ass.patch b/patches/cmd-launch-association/0001-cmd-Support-for-launching-programs-based-on-file-ass.patch index 2c0587ed..155fb361 100644 --- a/patches/cmd-launch-association/0001-cmd-Support-for-launching-programs-based-on-file-ass.patch +++ b/patches/cmd-launch-association/0001-cmd-Support-for-launching-programs-based-on-file-ass.patch @@ -1,4 +1,4 @@ -From 8dcb8ee100c5f81cef92ec98376288253b021f6a Mon Sep 17 00:00:00 2001 +From f0248f536027bb22efae2f92e180046c075a87c1 Mon Sep 17 00:00:00 2001 From: Jason Edmeades Date: Tue, 16 Jul 2019 13:49:18 +1000 Subject: [PATCH] cmd: Support for launching programs based on file association @@ -15,10 +15,10 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=36646 1 file changed, 102 insertions(+), 37 deletions(-) diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c -index 5f1a94b39b3..487be39c954 100644 +index ce083e710f7..2aad90e350d 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c -@@ -1385,8 +1385,10 @@ void WCMD_run_program (WCHAR *command, BOOL called) +@@ -1483,8 +1483,10 @@ void WCMD_run_program (WCHAR *command, BOOL called) /* 1. If extension supplied, see if that file exists */ if (extensionsupplied) { @@ -30,7 +30,7 @@ index 5f1a94b39b3..487be39c954 100644 } } -@@ -1416,6 +1418,7 @@ void WCMD_run_program (WCHAR *command, BOOL called) +@@ -1514,6 +1516,7 @@ void WCMD_run_program (WCHAR *command, BOOL called) } if (GetFileAttributesW(thisDir) != INVALID_FILE_ATTRIBUTES) { @@ -38,7 +38,7 @@ index 5f1a94b39b3..487be39c954 100644 found = TRUE; thisExt = NULL; } -@@ -1437,52 +1440,114 @@ void WCMD_run_program (WCHAR *command, BOOL called) +@@ -1535,52 +1538,114 @@ void WCMD_run_program (WCHAR *command, BOOL called) /* Special case BAT and CMD */ if (ext && (!wcsicmp(ext, L".bat") || !wcsicmp(ext, L".cmd"))) { BOOL oldinteractive = interactive; @@ -158,7 +158,7 @@ index 5f1a94b39b3..487be39c954 100644 - if (!interactive || (console && !HIWORD(console))) - WaitForSingleObject (pe.hProcess, INFINITE); - GetExitCodeProcess (pe.hProcess, &exit_code); -- errorlevel = (exit_code == STILL_ACTIVE) ? 0 : exit_code; +- errorlevel = (exit_code == STILL_ACTIVE) ? NO_ERROR : exit_code; + if (!status) { + WINE_TRACE("Failed to launch via CreateProcess, rc %d (%ld)\n", + status, GetLastError()); diff --git a/patches/cmd-launch-association/0002-cmd-ftype-failed-to-clear-file-associations.patch b/patches/cmd-launch-association/0002-cmd-ftype-failed-to-clear-file-associations.patch index c612634b..3bdd7340 100644 --- a/patches/cmd-launch-association/0002-cmd-ftype-failed-to-clear-file-associations.patch +++ b/patches/cmd-launch-association/0002-cmd-ftype-failed-to-clear-file-associations.patch @@ -1,7 +1,7 @@ -From 7bb9825d921f91be01144110f6478a0c017cbd79 Mon Sep 17 00:00:00 2001 +From 2f9fa2d492521d297eb87e4b6709d8349818b9c6 Mon Sep 17 00:00:00 2001 From: Jason Edmeades Date: Tue, 16 Jul 2019 13:51:58 +1000 -Subject: [PATCH 2/2] cmd: ftype failed to clear file associations +Subject: [PATCH] cmd: ftype failed to clear file associations If a file association was set (e.g. ftype fred=xxx), ftype fred= needs to clear it, but previously it failed to do so. @@ -12,10 +12,10 @@ but previously it failed to do so. 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c -index 62ae19a494..e85e553c05 100644 +index 1c39c35ca78..f23f9ef2046 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c -@@ -4939,11 +4939,11 @@ void WCMD_assoc (const WCHAR *args, BOOL assoc) { +@@ -4101,11 +4101,11 @@ void WCMD_assoc (const WCHAR *args, BOOL assoc) { /* If nothing after '=' then clear value - only valid for ASSOC */ if (*newValue == 0x00) { @@ -28,13 +28,13 @@ index 62ae19a494..e85e553c05 100644 - } else if (assoc && rc != ERROR_FILE_NOT_FOUND) { + } else if (rc != ERROR_FILE_NOT_FOUND) { WCMD_print_error(); - errorlevel = 2; + errorlevel = ERROR_FILE_NOT_FOUND; diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd -index f4dfc9f26d..0ef049a4ab 100644 +index d5397560bc6..14666c85cac 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd -@@ -2440,6 +2440,12 @@ echo echo +++>> tmp.cmd +@@ -2670,6 +2670,12 @@ echo echo +++>> tmp.cmd echo ftype footype>> tmp.cmd cmd /c tmp.cmd @@ -47,7 +47,7 @@ index f4dfc9f26d..0ef049a4ab 100644 echo --- resetting association assoc .foo= -@@ -2471,6 +2477,9 @@ echo .foo=footype +@@ -2701,6 +2707,9 @@ echo .foo=footype echo footype=foo_opencmd echo +++ echo footype=foo_opencmd @@ -58,10 +58,10 @@ index f4dfc9f26d..0ef049a4ab 100644 echo original value diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp -index d78d91a6cf..e6ebe06714 100644 +index 0102c3bcbc5..a6d97bc8248 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp -@@ -1444,8 +1444,11 @@ footype=foo_opencmd +@@ -1549,8 +1549,11 @@ footype=foo_opencmd footype=foo_opencmd +++ footype=foo_opencmd @@ -75,5 +75,5 @@ index d78d91a6cf..e6ebe06714 100644 --- external script foo@space@ -- -2.17.1 +2.43.0 diff --git a/patches/ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-reparse-points.patch b/patches/ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-reparse-points.patch index 36c56f26..bd692c62 100644 --- a/patches/ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-reparse-points.patch +++ b/patches/ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-reparse-points.patch @@ -1,4 +1,4 @@ -From 801191c93bc6780ee726727c82c0e0b696e300ef Mon Sep 17 00:00:00 2001 +From 369f4d92683910c01d82719e448d21a74b7b82d8 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 16 Jan 2014 20:57:57 -0700 Subject: [PATCH] ntdll: Add support for reading reparse points. @@ -6,14 +6,14 @@ Subject: [PATCH] ntdll: Add support for reading reparse points. Signed-off-by: Erich E. Hoover --- dlls/ntdll/tests/file.c | 21 +++- - dlls/ntdll/unix/file.c | 222 ++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 231 insertions(+), 12 deletions(-) + dlls/ntdll/unix/file.c | 221 ++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 231 insertions(+), 11 deletions(-) diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index 17da7552046..b9ec79e37e0 100644 +index 148b6058cee..441bb69adcb 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c -@@ -5387,14 +5387,14 @@ static void test_reparse_points(void) +@@ -5896,14 +5896,14 @@ static void test_reparse_points(void) static const WCHAR reparseW[] = {'\\','r','e','p','a','r','s','e',0}; static const WCHAR targetW[] = {'\\','t','a','r','g','e','t',0}; static const WCHAR parentW[] = {'\\','.','.','\\',0}; @@ -30,7 +30,7 @@ index 17da7552046..b9ec79e37e0 100644 HANDLE handle; BOOL bret; -@@ -5491,6 +5491,23 @@ static void test_reparse_points(void) +@@ -6000,6 +6000,23 @@ static void test_reparse_points(void) buffer_len = build_reparse_buffer(long_path, &buffer); bret = DeviceIoControl(handle, FSCTL_SET_REPARSE_POINT, (LPVOID)buffer, buffer_len, NULL, 0, &dwret, 0); ok(bret, "Failed to create junction point! (0x%lx)\n", GetLastError()); @@ -55,10 +55,10 @@ index 17da7552046..b9ec79e37e0 100644 cleanup: diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 52b85cfc6d1..0967b3b9392 100644 +index 0d58abbfa84..3e160fb1e5c 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -315,6 +315,84 @@ static UINT encode_base64url( const char *bin, unsigned int len, char *base64 ) +@@ -325,6 +325,84 @@ static UINT encode_base64url( const char *bin, unsigned int len, char *base64 ) return n; } @@ -143,7 +143,7 @@ index 52b85cfc6d1..0967b3b9392 100644 /* create a directory and all the needed parent directories */ static int mkdir_p( int dirfd, const char *path, mode_t mode ) { -@@ -3608,6 +3686,132 @@ cleanup: +@@ -3715,6 +3793,132 @@ cleanup: } @@ -276,12 +276,11 @@ index 52b85cfc6d1..0967b3b9392 100644 /****************************************************************************** * lookup_unix_name * -@@ -6335,16 +6539,6 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap +@@ -6525,15 +6729,6 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap break; } - case FSCTL_GET_REPARSE_POINT: -- io->Information = 0; - if (out_buffer && out_size) - { - FIXME("FSCTL_GET_REPARSE_POINT semi-stub\n"); @@ -293,7 +292,7 @@ index 52b85cfc6d1..0967b3b9392 100644 case FSCTL_GET_OBJECT_ID: { FILE_OBJECTID_BUFFER *info = out_buffer; -@@ -6367,6 +6561,14 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap +@@ -6555,6 +6750,14 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap break; } @@ -309,5 +308,5 @@ index 52b85cfc6d1..0967b3b9392 100644 { REPARSE_DATA_BUFFER *buffer = (REPARSE_DATA_BUFFER *)in_buffer; -- -2.37.2 +2.43.0 diff --git a/patches/user32-rawinput-mouse/0004-server-Add-send_hardware_message-flags-for-rawinput-.patch b/patches/user32-rawinput-mouse/0004-server-Add-send_hardware_message-flags-for-rawinput-.patch index 9a37af7e..26190c88 100644 --- a/patches/user32-rawinput-mouse/0004-server-Add-send_hardware_message-flags-for-rawinput-.patch +++ b/patches/user32-rawinput-mouse/0004-server-Add-send_hardware_message-flags-for-rawinput-.patch @@ -1,4 +1,4 @@ -From 0dae85eba564b06274760c085652908727e3b2e7 Mon Sep 17 00:00:00 2001 +From 48124df7efbda048d841899cc9bde77a3684622b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Mon, 26 Aug 2019 14:37:20 +0200 Subject: [PATCH] server: Add send_hardware_message flags for rawinput @@ -26,10 +26,10 @@ index bd11567290f..c75e691b4ee 100644 { UINT flags; diff --git a/server/protocol.def b/server/protocol.def -index dc77ecec15b..e4e632dcf23 100644 +index 222a283477a..320b87775b7 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -2206,7 +2206,7 @@ enum message_type +@@ -2208,7 +2208,7 @@ enum message_type @REQ(send_hardware_message) user_handle_t win; /* window handle */ hw_input_t input; /* input data */ @@ -38,7 +38,7 @@ index dc77ecec15b..e4e632dcf23 100644 VARARG(report,bytes); /* HID report data */ @REPLY int wait; /* do we need to wait for a reply? */ -@@ -2215,7 +2215,6 @@ enum message_type +@@ -2217,7 +2217,6 @@ enum message_type int new_x; /* new cursor position */ int new_y; @END @@ -47,10 +47,10 @@ index dc77ecec15b..e4e632dcf23 100644 /* Get a message from the current queue */ diff --git a/server/queue.c b/server/queue.c -index cece12066fc..c423b9ad8c4 100644 +index 784443ce955..0db4faab193 100644 --- a/server/queue.c +++ b/server/queue.c -@@ -2031,7 +2031,7 @@ static void dispatch_rawinput_message( struct desktop *desktop, struct rawinput_ +@@ -2056,7 +2056,7 @@ static void dispatch_rawinput_message( struct desktop *desktop, struct rawinput_ /* queue a hardware message for a mouse event */ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, const hw_input_t *input, @@ -59,7 +59,7 @@ index cece12066fc..c423b9ad8c4 100644 { const desktop_shm_t *desktop_shm = desktop->shared; struct hardware_msg_data *msg_data; -@@ -2092,7 +2092,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons +@@ -2117,7 +2117,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons y = desktop_shm->cursor.y; } @@ -68,7 +68,7 @@ index cece12066fc..c423b9ad8c4 100644 { memset( &raw_msg, 0, sizeof(raw_msg) ); raw_msg.foreground = foreground; -@@ -2107,6 +2107,8 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons +@@ -2132,6 +2132,8 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons release_object( foreground ); } @@ -77,7 +77,7 @@ index cece12066fc..c423b9ad8c4 100644 for (i = 0; i < ARRAY_SIZE( messages ); i++) { if (!messages[i]) continue; -@@ -2137,14 +2139,14 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons +@@ -2162,14 +2164,14 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons } static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const hw_input_t *input, @@ -94,16 +94,16 @@ index cece12066fc..c423b9ad8c4 100644 } static void stop_key_repeat( struct desktop *desktop ) -@@ -2157,7 +2159,7 @@ static void stop_key_repeat( struct desktop *desktop ) +@@ -2182,7 +2184,7 @@ static void stop_key_repeat( struct desktop *desktop ) /* queue a hardware message for a keyboard event */ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const hw_input_t *input, - unsigned int origin, struct msg_queue *sender, int repeat ) + unsigned int origin, struct msg_queue *sender, int repeat, unsigned int send_flags ) { + const desktop_shm_t *desktop_shm = desktop->shared; struct hw_msg_source source = { IMDT_KEYBOARD, origin }; - struct hardware_msg_data *msg_data; -@@ -2280,7 +2282,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c +@@ -2305,7 +2307,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c } } @@ -112,7 +112,7 @@ index cece12066fc..c423b9ad8c4 100644 { struct rawinput_message raw_msg = {0}; raw_msg.foreground = foreground; -@@ -2295,6 +2297,8 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c +@@ -2320,6 +2322,8 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c release_object( foreground ); } @@ -121,7 +121,7 @@ index cece12066fc..c423b9ad8c4 100644 if (!(msg = alloc_hardware_message( input->kbd.info, source, time, 0 ))) return 0; msg_data = msg->data; -@@ -3050,10 +3054,10 @@ DECL_HANDLER(send_hardware_message) +@@ -3075,10 +3079,10 @@ DECL_HANDLER(send_hardware_message) switch (req->input.type) { case INPUT_MOUSE: diff --git a/staging/upstream-commit b/staging/upstream-commit index b2bb92b1..37c4a572 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -8c64979dcb2673659adacf39733e24d42b7fc01d +6c5d17af07a318d754c0c21023b2d162a0d3725d