Rebase against 2ad09b01673381261815bfc804a2f69ce4d85f86.

This commit is contained in:
Alistair Leslie-Hughes
2020-12-01 09:52:39 +11:00
parent 47fea9ffa2
commit d3b70d6278
12 changed files with 141 additions and 1240 deletions

View File

@@ -1,8 +1,7 @@
From 25b5e818272cf6fc52a8707c80b9ade3a5ca5df5 Mon Sep 17 00:00:00 2001
From a207d7f2c77296798e047ed03d88d8a060139aff 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 1/2] cmd: Support for launching programs based on file
association
Subject: [PATCH] cmd: Support for launching programs based on file association
cmd already handles exe, cmd, bat etc but if you run a file with another extension,
then use the associations set in the registry (for example via ftype / assoc) to
@@ -12,14 +11,14 @@ fred.msi for msiexec to be launched.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=18154
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=36646
---
programs/cmd/wcmdmain.c | 140 +++++++++++++++++++++++++++++-----------
1 file changed, 104 insertions(+), 36 deletions(-)
programs/cmd/wcmdmain.c | 138 +++++++++++++++++++++++++++++-----------
1 file changed, 102 insertions(+), 36 deletions(-)
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 29e498a48d..2a9e4c75ee 100644
index cacb7ea7751..19a807c1624 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1142,8 +1142,10 @@ void WCMD_run_program (WCHAR *command, BOOL called)
@@ -1135,8 +1135,10 @@ void WCMD_run_program (WCHAR *command, BOOL called)
/* 1. If extension supplied, see if that file exists */
if (extensionsupplied) {
@@ -31,7 +30,7 @@ index 29e498a48d..2a9e4c75ee 100644
}
}
@@ -1174,6 +1176,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
@@ -1166,6 +1168,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
}
if (GetFileAttributesW(thisDir) != INVALID_FILE_ATTRIBUTES) {
@@ -39,17 +38,9 @@ index 29e498a48d..2a9e4c75ee 100644
found = TRUE;
thisExt = NULL;
}
@@ -1191,58 +1194,123 @@ void WCMD_run_program (WCHAR *command, BOOL called)
WCHAR *ext = wcsrchr( thisDir, '.' );
static const WCHAR batExt[] = {'.','b','a','t','\0'};
static const WCHAR cmdExt[] = {'.','c','m','d','\0'};
+ static const WCHAR exeExt[] = {'.','e','x','e','\0'};
+ static const WCHAR comExt[] = {'.','c','o','m','\0'};
WINE_TRACE("Found as %s\n", wine_dbgstr_w(thisDir));
@@ -1187,52 +1190,115 @@ void WCMD_run_program (WCHAR *command, BOOL called)
/* Special case BAT and CMD */
if (ext && (!wcsicmp(ext, batExt) || !wcsicmp(ext, cmdExt))) {
if (ext && (!wcsicmp(ext, L".bat") || !wcsicmp(ext, L".cmd"))) {
BOOL oldinteractive = interactive;
+ WINE_TRACE("Calling batch program\n");
interactive = FALSE;
@@ -95,7 +86,7 @@ index 29e498a48d..2a9e4c75ee 100644
+
+ /* If it is not a .com or .exe, try to launch through ShellExecuteExW
+ which takes into account the association for the extension. */
+ if (ext && (wcsicmp(ext, exeExt) && wcsicmp(ext, comExt))) {
+ if (ext && (wcsicmp(ext, L".exe") && wcsicmp(ext, L".com"))) {
+
+ SHELLEXECUTEINFOW shexw;
+ BOOL rc;
@@ -199,5 +190,5 @@ index 29e498a48d..2a9e4c75ee 100644
}
--
2.17.1
2.29.2