Rebase against 6c5d17af07a318d754c0c21023b2d162a0d3725d.

This commit is contained in:
Alistair Leslie-Hughes 2024-06-22 17:37:43 +10:00
parent 5ecb89298f
commit 593249dcde
5 changed files with 44 additions and 45 deletions

View File

@ -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 <us@edmeades.me.uk>
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());

View File

@ -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 <us@edmeades.me.uk>
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

View File

@ -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" <erich.e.hoover@gmail.com>
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 <erich.e.hoover@gmail.com>
---
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

View File

@ -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?= <rbernon@codeweavers.com>
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:

View File

@ -1 +1 @@
8c64979dcb2673659adacf39733e24d42b7fc01d
6c5d17af07a318d754c0c21023b2d162a0d3725d