Rebase against 8547aac2dcfcae9060d0a630c9f80af7bcaf19b4.

This commit is contained in:
Alistair Leslie-Hughes 2021-09-17 12:40:50 +10:00
parent d918a0ca3f
commit afb9dcf2a5
5 changed files with 64 additions and 129 deletions

View File

@ -1 +1,2 @@
Fixes: [49692] Multiple applications need a Media Foundation media source implementation
Disabled: True

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "f232252951fec637758f6b2c4eeda1c0e0650310"
echo "8547aac2dcfcae9060d0a630c9f80af7bcaf19b4"
}
# Show version information
@ -137,7 +137,6 @@ patch_enable_all ()
enable_krnl386_exe16_Invalid_Console_Handles="$1"
enable_libs_Unicode_Collation="$1"
enable_loader_KeyboardLayouts="$1"
enable_mfplat_streaming_support="$1"
enable_mmsystem_dll16_MIDIHDR_Refcount="$1"
enable_mountmgr_DosDevices="$1"
enable_mscoree_CorValidateImage="$1"
@ -449,9 +448,6 @@ patch_enable ()
loader-KeyboardLayouts)
enable_loader_KeyboardLayouts="$2"
;;
mfplat-streaming-support)
enable_mfplat_streaming_support="$2"
;;
mmsystem.dll16-MIDIHDR_Refcount)
enable_mmsystem_dll16_MIDIHDR_Refcount="$2"
;;
@ -2378,58 +2374,6 @@ if test "$enable_loader_KeyboardLayouts" -eq 1; then
patch_apply loader-KeyboardLayouts/0002-user32-Improve-GetKeyboardLayoutList.patch
fi
# Patchset mfplat-streaming-support
# |
# | This patchset fixes the following Wine bugs:
# | * [#49692] Multiple applications need a Media Foundation media source implementation
# |
# | Modified files:
# | * dlls/mf/topology.c, dlls/mfplat/main.c, dlls/winegstreamer/Makefile.in, dlls/winegstreamer/audioconvert.c,
# | dlls/winegstreamer/colorconvert.c, dlls/winegstreamer/decode_transform.c, dlls/winegstreamer/gst_private.h,
# | dlls/winegstreamer/media_source.c, dlls/winegstreamer/mfplat.c, dlls/winegstreamer/quartz_parser.c,
# | dlls/winegstreamer/wg_parser.c, dlls/winegstreamer/winegstreamer_classes.idl, include/mfidl.idl, include/wmcodecdsp.idl
# |
if test "$enable_mfplat_streaming_support" -eq 1; then
patch_apply mfplat-streaming-support/0001-winegstreamer-Activate-source-pad-in-push-mode-if-it.patch
patch_apply mfplat-streaming-support/0002-winegstreamer-Push-stream-start-and-segment-events-i.patch
patch_apply mfplat-streaming-support/0003-winegstreamer-Introduce-H.264-decoder-transform.patch
patch_apply mfplat-streaming-support/0004-winegstreamer-Implement-GetInputAvailableType-for-de.patch
patch_apply mfplat-streaming-support/0005-winegstreamer-Implement-GetOutputAvailableType-for-d.patch
patch_apply mfplat-streaming-support/0006-winegstreamer-Implement-SetInputType-for-decode-tran.patch
patch_apply mfplat-streaming-support/0007-winegstreamer-Implement-SetOutputType-for-decode-tra.patch
patch_apply mfplat-streaming-support/0008-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
patch_apply mfplat-streaming-support/0009-winegstreamer-Add-push-mode-path-for-wg_parser.patch
patch_apply mfplat-streaming-support/0010-winegstreamer-Implement-Process-Input-Output-for-dec.patch
patch_apply mfplat-streaming-support/0011-winestreamer-Implement-ProcessMessage-for-decoder-tr.patch
patch_apply mfplat-streaming-support/0012-winegstreamer-Semi-stub-GetAttributes-for-decoder-tr.patch
patch_apply mfplat-streaming-support/0013-winegstreamer-Register-the-H.264-decoder-transform.patch
patch_apply mfplat-streaming-support/0014-winegstreamer-Introduce-AAC-decoder-transform.patch
patch_apply mfplat-streaming-support/0015-winegstreamer-Register-the-AAC-decoder-transform.patch
patch_apply mfplat-streaming-support/0016-winegstreamer-Rename-GStreamer-objects-to-be-more-ge.patch
patch_apply mfplat-streaming-support/0017-winegstreamer-Report-streams-backwards-in-media-sour.patch
patch_apply mfplat-streaming-support/0018-winegstreamer-Implement-Process-Input-Output-for-aud.patch
patch_apply mfplat-streaming-support/0019-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
patch_apply mfplat-streaming-support/0020-winegstreamer-Semi-stub-Get-Attributes-functions-for.patch
patch_apply mfplat-streaming-support/0021-winegstreamer-Introduce-color-conversion-transform.patch
patch_apply mfplat-streaming-support/0022-winegstreamer-Register-the-color-conversion-transfor.patch
patch_apply mfplat-streaming-support/0023-winegstreamer-Implement-GetInputAvailableType-for-co.patch
patch_apply mfplat-streaming-support/0024-winegstreamer-Implement-SetInputType-for-color-conve.patch
patch_apply mfplat-streaming-support/0025-winegstreamer-Implement-GetOutputAvailableType-for-c.patch
patch_apply mfplat-streaming-support/0026-winegstreamer-Implement-SetOutputType-for-color-conv.patch
patch_apply mfplat-streaming-support/0027-winegstreamer-Implement-Process-Input-Output-for-col.patch
patch_apply mfplat-streaming-support/0028-winegstreamer-Implement-ProcessMessage-for-color-con.patch
patch_apply mfplat-streaming-support/0029-winegstreamer-Implement-Get-Input-Output-StreamInfo-.patch
patch_apply mfplat-streaming-support/0030-mf-topology-Forward-failure-from-SetOutputType-when-.patch
patch_apply mfplat-streaming-support/0031-winegstreamer-Handle-flush-command-in-audio-converst.patch
patch_apply mfplat-streaming-support/0032-winegstreamer-In-the-default-configuration-select-on.patch
patch_apply mfplat-streaming-support/0033-winegstreamer-Implement-MF_SD_LANGUAGE.patch
patch_apply mfplat-streaming-support/0034-winegstreamer-Only-require-videobox-element-for-pars.patch
patch_apply mfplat-streaming-support/0035-winegstreamer-Don-t-rely-on-max_size-in-unseekable-p.patch
patch_apply mfplat-streaming-support/0036-winegstreamer-Implement-MFT_MESSAGE_COMMAND_FLUSH-fo.patch
patch_apply mfplat-streaming-support/0037-winegstreamer-Default-Frame-size-if-one-isn-t-availa.patch
patch_apply mfplat-streaming-support/0038-mfplat-Stub-out-MFCreateDXGIDeviceManager-to-avoid-t.patch
fi
# Patchset mmsystem.dll16-MIDIHDR_Refcount
# |
# | This patchset fixes the following Wine bugs:

View File

@ -1,17 +1,17 @@
From c88ebdd4735d3aece4b3d30e7863f69180f431ef Mon Sep 17 00:00:00 2001
From c3a3329a62b2d113101a507620927a64f158388f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 24 Feb 2015 04:25:29 +0100
Subject: [PATCH] shell32: Correct indentation in shfileop.c.
---
dlls/shell32/shlfileop.c | 662 +++++++++++++++++++--------------------
1 file changed, 330 insertions(+), 332 deletions(-)
dlls/shell32/shlfileop.c | 660 +++++++++++++++++++--------------------
1 file changed, 329 insertions(+), 331 deletions(-)
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index 78ee2d1c0..180302db2 100644
index 941dba725cd..7b5339acc92 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -207,108 +207,107 @@ static int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, H
@@ -210,108 +210,107 @@ static int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, H
/* confirmation dialogs content */
typedef struct
{
@ -208,7 +208,7 @@ index 78ee2d1c0..180302db2 100644
}
BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir)
@@ -318,18 +317,18 @@ BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir)
@@ -321,18 +320,18 @@ BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir)
static DWORD SHELL32_AnsiToUnicodeBuf(LPCSTR aPath, LPWSTR *wPath, DWORD minChars)
{
@ -237,7 +237,7 @@ index 78ee2d1c0..180302db2 100644
}
HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status)
@@ -372,8 +371,8 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI)
@@ -375,8 +374,8 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI)
ret = SHNotifyRemoveDirectoryW(pszDir);
return ret == ERROR_PATH_NOT_FOUND ?
@ -248,7 +248,7 @@ index 78ee2d1c0..180302db2 100644
}
/**************************************************************************
@@ -393,41 +392,41 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI)
@@ -396,41 +395,41 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI)
*/
static DWORD SHNotifyCreateDirectoryA(LPCSTR path, LPSECURITY_ATTRIBUTES sec)
{
@ -310,7 +310,7 @@ index 78ee2d1c0..180302db2 100644
}
/************************************************************************
@@ -447,51 +446,51 @@ BOOL WINAPI Win32CreateDirectoryAW(LPCVOID path, LPSECURITY_ATTRIBUTES sec)
@@ -450,51 +449,51 @@ BOOL WINAPI Win32CreateDirectoryAW(LPCVOID path, LPSECURITY_ATTRIBUTES sec)
*/
static DWORD SHNotifyRemoveDirectoryA(LPCSTR path)
{
@ -392,7 +392,7 @@ index 78ee2d1c0..180302db2 100644
}
/************************************************************************
@@ -511,52 +510,52 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path)
@@ -514,52 +513,52 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path)
*/
static DWORD SHNotifyDeleteFileA(LPCSTR path)
{
@ -475,7 +475,7 @@ index 78ee2d1c0..180302db2 100644
}
/************************************************************************
@@ -573,36 +572,36 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path)
@@ -576,36 +575,36 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path)
*/
static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
{
@ -537,7 +537,7 @@ index 78ee2d1c0..180302db2 100644
}
/************************************************************************
@@ -621,24 +620,24 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
@@ -624,24 +623,24 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
*/
static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists)
{
@ -576,7 +576,7 @@ index 78ee2d1c0..180302db2 100644
}
/*************************************************************************
@@ -668,9 +667,9 @@ static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists)
@@ -671,9 +670,9 @@ static DWORD SHNotifyCopyFileW(LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists)
*/
DWORD WINAPI SHCreateDirectory(HWND hWnd, LPCVOID path)
{
@ -589,7 +589,7 @@ index 78ee2d1c0..180302db2 100644
}
/*************************************************************************
@@ -707,18 +706,18 @@ DWORD WINAPI SHCreateDirectory(HWND hWnd, LPCVOID path)
@@ -710,18 +709,18 @@ DWORD WINAPI SHCreateDirectory(HWND hWnd, LPCVOID path)
*/
int WINAPI SHCreateDirectoryExA(HWND hWnd, LPCSTR path, LPSECURITY_ATTRIBUTES sec)
{
@ -618,7 +618,7 @@ index 78ee2d1c0..180302db2 100644
}
/*************************************************************************
@@ -792,25 +791,25 @@ int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES s
@@ -795,25 +794,25 @@ int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES s
*/
static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly)
{
@ -662,7 +662,7 @@ index 78ee2d1c0..180302db2 100644
}
/*************************************************************************
@@ -824,27 +823,27 @@ static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly)
@@ -827,27 +826,27 @@ static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly)
*/
static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more)
{
@ -710,7 +710,7 @@ index 78ee2d1c0..180302db2 100644
}
/*************************************************************************
* SHFileOperationA [SHELL32.@]
@@ -864,46 +863,45 @@ static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more)
@@ -867,46 +866,45 @@ static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more)
*/
int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
{
@ -794,7 +794,7 @@ index 78ee2d1c0..180302db2 100644
}
#define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026
@@ -933,7 +931,7 @@ typedef struct
@@ -936,7 +934,7 @@ typedef struct
static inline void grow_list(FILE_LIST *list)
{
FILE_ENTRY *new = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, list->feFiles,
@ -803,7 +803,7 @@ index 78ee2d1c0..180302db2 100644
list->feFiles = new;
list->num_alloc *= 2;
}
@@ -1026,7 +1024,7 @@ static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles)
@@ -1029,7 +1027,7 @@ static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles)
/* empty list */
if (!szFiles[0])
return ERROR_ACCESS_DENIED;
@ -812,7 +812,7 @@ index 78ee2d1c0..180302db2 100644
flList->feFiles = heap_alloc_zero(flList->num_alloc * sizeof(FILE_ENTRY));
while (*ptr)
@@ -1131,7 +1129,7 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST
@@ -1134,7 +1132,7 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST
/* Don't ask the user about overwriting files when he accepted to overwrite the
folder. FIXME: this is not exactly what Windows does - e.g. there would be
an additional confirmation for a nested folder */
@ -821,16 +821,7 @@ index 78ee2d1c0..180302db2 100644
SHFileOperationW(&fileOp);
}
@@ -1344,7 +1342,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
/* Windows also checks only the first item */
bTrash = (lpFileOp->fFlags & FOF_ALLOWUNDO)
- && TRASH_CanTrashFile(flFrom->feFiles[0].szFullPath);
+ && TRASH_CanTrashFile(flFrom->feFiles[0].szFullPath);
if (!(lpFileOp->fFlags & FOF_NOCONFIRMATION) || (!bTrash && lpFileOp->fFlags & FOF_WANTNUKEWARNING))
if (!confirm_delete_list(lpFileOp->hwnd, lpFileOp->fFlags, bTrash, flFrom))
@@ -1379,11 +1377,11 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1381,11 +1379,11 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
break;
}
}
@ -844,7 +835,7 @@ index 78ee2d1c0..180302db2 100644
else
ret = SHELL_DeleteDirectoryW(lpFileOp->hwnd, fileEntry->szFullPath, FALSE);
@@ -1508,8 +1506,8 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1510,8 +1508,8 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
static void check_flags(FILEOP_FLAGS fFlags)
{
WORD wUnsupportedFlags = FOF_NO_CONNECTED_ELEMENTS |
@ -855,7 +846,7 @@ index 78ee2d1c0..180302db2 100644
if (fFlags & wUnsupportedFlags)
FIXME("Unsupported flags: %04x\n", fFlags);
@@ -1592,19 +1590,19 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1594,19 +1592,19 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
*/
void WINAPI SHFreeNameMappings(HANDLE hNameMapping)
{
@ -885,7 +876,7 @@ index 78ee2d1c0..180302db2 100644
}
/*************************************************************************
@@ -1710,14 +1708,14 @@ DWORD WINAPI SheChangeDirW(LPWSTR path)
@@ -1712,14 +1710,14 @@ DWORD WINAPI SheChangeDirW(LPWSTR path)
}
/*************************************************************************
@ -906,5 +897,5 @@ index 78ee2d1c0..180302db2 100644
--
2.21.0
2.33.0

View File

@ -1,4 +1,4 @@
From fdaeb6ba616ef833c275e2aa53fc06abacefc1ad Mon Sep 17 00:00:00 2001
From 7cbc2d3a95bdbd362138638b90a24c1b2b7cacfc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 26 Feb 2015 23:21:26 +0100
Subject: [PATCH] shell32: Pass FILE_INFORMATION into SHNotify* functions.
@ -9,10 +9,10 @@ Preparation of the progressbar work. Based on a patch by Huw Campbell.
1 file changed, 98 insertions(+), 103 deletions(-)
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index e4c7449f05e..028a1d76e4f 100644
index 7b5339acc92..85448bad7dd 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -59,16 +59,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
@@ -62,16 +62,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
static const WCHAR wWildcardFile[] = {'*',0};
static const WCHAR wWildcardChars[] = {'*','?',0};
@ -29,7 +29,7 @@ index e4c7449f05e..028a1d76e4f 100644
typedef struct
{
SHFILEOPSTRUCTW *req;
@@ -77,6 +67,42 @@ typedef struct
@@ -80,6 +70,42 @@ typedef struct
BOOL bCancelled;
} FILE_OPERATION;
@ -72,7 +72,7 @@ index e4c7449f05e..028a1d76e4f 100644
/* Confirm dialogs with an optional "Yes To All" as used in file operations confirmations
*/
static const WCHAR CONFIRM_MSG_PROP[] = {'W','I','N','E','_','C','O','N','F','I','R','M',0};
@@ -343,7 +369,7 @@ HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status)
@@ -346,7 +372,7 @@ HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status)
* Asks for confirmation when bShowUI is true and deletes the directory and
* all its subdirectories and files if necessary.
*/
@ -81,7 +81,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
DWORD ret = 0;
HANDLE hFind;
@@ -353,16 +379,18 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI)
@@ -356,16 +382,18 @@ static DWORD SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pszDir, BOOL bShowUI)
PathCombineW(szTemp, pszDir, wWildcardFile);
hFind = FindFirstFileW(szTemp, &wfd);
@ -104,7 +104,7 @@ index e4c7449f05e..028a1d76e4f 100644
} while (!ret && FindNextFileW(hFind, &wfd));
}
FindClose(hFind);
@@ -493,22 +521,9 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path)
@@ -496,22 +524,9 @@ BOOL WINAPI Win32RemoveDirectoryAW(LPCVOID path)
return (SHNotifyRemoveDirectoryA(path) == ERROR_SUCCESS);
}
@ -130,7 +130,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
LPWSTR wPath;
DWORD retCode;
@@ -518,7 +533,7 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path)
@@ -521,7 +536,7 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path)
retCode = SHELL32_AnsiToUnicodeBuf(path, &wPath, 0);
if (!retCode)
{
@ -139,7 +139,7 @@ index e4c7449f05e..028a1d76e4f 100644
heap_free(wPath);
}
return retCode;
@@ -526,12 +541,14 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path)
@@ -529,12 +544,14 @@ static DWORD SHNotifyDeleteFileA(LPCSTR path)
/***********************************************************************/
@ -155,7 +155,7 @@ index e4c7449f05e..028a1d76e4f 100644
ret = DeleteFileW(path);
if (!ret)
{
@@ -554,8 +571,8 @@ static DWORD SHNotifyDeleteFileW(LPCWSTR path)
@@ -557,8 +574,8 @@ static DWORD SHNotifyDeleteFileW(LPCWSTR path)
DWORD WINAPI Win32DeleteFileAW(LPCVOID path)
{
if (SHELL_OsIsUnicode())
@ -166,7 +166,7 @@ index e4c7449f05e..028a1d76e4f 100644
}
/************************************************************************
@@ -564,18 +581,21 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path)
@@ -567,18 +584,21 @@ DWORD WINAPI Win32DeleteFileAW(LPCVOID path)
* Moves a file. Also triggers a change notify if one exists.
*
* PARAMS
@ -189,7 +189,7 @@ index e4c7449f05e..028a1d76e4f 100644
ret = MoveFileExW(src, dest, MOVEFILE_REPLACE_EXISTING);
/* MOVEFILE_REPLACE_EXISTING fails with dirs, so try MoveFile */
@@ -610,6 +630,7 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
@@ -613,6 +633,7 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
* Copies a file. Also triggers a change notify if one exists.
*
* PARAMS
@ -197,7 +197,7 @@ index e4c7449f05e..028a1d76e4f 100644
* src [I] path to source file to move
* dest [I] path to target file to move to
* bFailIfExists [I] if TRUE, the target file will not be overwritten if
@@ -618,13 +639,15 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
@@ -621,13 +642,15 @@ static DWORD SHNotifyMoveFileW(LPCWSTR src, LPCWSTR dest)
* RETURNS
* ERROR_SUCCESS if successful
*/
@ -214,7 +214,7 @@ index e4c7449f05e..028a1d76e4f 100644
/* Destination file may already exist with read only attribute */
attribs = GetFileAttributesW(dest);
if (IsAttrib(attribs, FILE_ATTRIBUTE_READONLY))
@@ -904,30 +927,6 @@ int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
@@ -907,30 +930,6 @@ int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
return retCode;
}
@ -245,7 +245,7 @@ index e4c7449f05e..028a1d76e4f 100644
static inline void grow_list(FILE_LIST *list)
{
FILE_ENTRY *new = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, list->feFiles,
@@ -1093,7 +1092,7 @@ static void destroy_file_list(FILE_LIST *flList)
@@ -1096,7 +1095,7 @@ static void destroy_file_list(FILE_LIST *flList)
static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWSTR szDestPath)
{
WCHAR szFrom[MAX_PATH], szTo[MAX_PATH];
@ -254,7 +254,7 @@ index e4c7449f05e..028a1d76e4f 100644
static const WCHAR wildCardFiles[] = {'*','.','*',0};
@@ -1121,17 +1120,16 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST
@@ -1124,17 +1123,16 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST
PathCombineW(szFrom, feFrom->szFullPath, wildCardFiles);
szFrom[lstrlenW(szFrom) + 1] = '\0';
@ -280,7 +280,7 @@ index e4c7449f05e..028a1d76e4f 100644
}
static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCHAR *szTo)
@@ -1142,7 +1140,7 @@ static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCH
@@ -1145,7 +1143,7 @@ static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCH
return FALSE;
}
@ -289,7 +289,7 @@ index e4c7449f05e..028a1d76e4f 100644
}
/* copy a file or directory to another directory */
@@ -1182,7 +1180,7 @@ static void create_dest_dirs(LPCWSTR szDestDir)
@@ -1185,7 +1183,7 @@ static void create_dest_dirs(LPCWSTR szDestDir)
}
/* the FO_COPY operation */
@ -298,7 +298,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
DWORD i;
const FILE_ENTRY *entryToCopy;
@@ -1205,7 +1203,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl
@@ -1208,7 +1206,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl
fileDest = &flTo->feFiles[0];
}
@ -307,7 +307,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
if (flFrom->bAnyFromWildcard)
return ERROR_CANCELLED;
@@ -1257,8 +1255,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl
@@ -1260,8 +1258,7 @@ static int copy_files(FILE_OPERATION *op, const FILE_LIST *flFrom, FILE_LIST *fl
{
entryToCopy = &flFrom->feFiles[i];
@ -317,7 +317,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
fileDest = &flTo->feFiles[i];
}
@@ -1330,7 +1327,7 @@ static BOOL confirm_delete_list(HWND hWnd, DWORD fFlags, BOOL fTrash, const FILE
@@ -1333,7 +1330,7 @@ static BOOL confirm_delete_list(HWND hWnd, DWORD fFlags, BOOL fTrash, const FILE
}
/* the FO_DELETE operation */
@ -326,13 +326,12 @@ index e4c7449f05e..028a1d76e4f 100644
{
const FILE_ENTRY *fileEntry;
DWORD i;
@@ -1341,13 +1338,13 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1344,12 +1341,12 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
return ERROR_SUCCESS;
/* Windows also checks only the first item */
- bTrash = (lpFileOp->fFlags & FOF_ALLOWUNDO)
+ bTrash = (op->req->fFlags & FOF_ALLOWUNDO)
&& TRASH_CanTrashFile(flFrom->feFiles[0].szFullPath);
- bTrash = (lpFileOp->fFlags & FOF_ALLOWUNDO) && is_trash_available();
+ bTrash = (op->req->fFlags & FOF_ALLOWUNDO) && is_trash_available();
- if (!(lpFileOp->fFlags & FOF_NOCONFIRMATION) || (!bTrash && lpFileOp->fFlags & FOF_WANTNUKEWARNING))
- if (!confirm_delete_list(lpFileOp->hwnd, lpFileOp->fFlags, bTrash, flFrom))
@ -344,7 +343,7 @@ index e4c7449f05e..028a1d76e4f 100644
return 0;
}
@@ -1356,7 +1353,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1358,7 +1355,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
fileEntry = &flFrom->feFiles[i];
if (!IsAttribFile(fileEntry->attributes) &&
@ -353,7 +352,7 @@ index e4c7449f05e..028a1d76e4f 100644
continue;
if (bTrash)
@@ -1366,14 +1363,14 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1368,14 +1365,14 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
continue;
/* Note: Windows silently deletes the file in such a situation, we show a dialog */
@ -371,7 +370,7 @@ index e4c7449f05e..028a1d76e4f 100644
break;
}
}
@@ -1383,7 +1380,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1385,7 +1382,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
ret = DeleteFileW(fileEntry->szFullPath) ?
ERROR_SUCCESS : GetLastError();
else
@ -380,7 +379,7 @@ index e4c7449f05e..028a1d76e4f 100644
if (ret)
return ret;
@@ -1393,16 +1390,16 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1395,16 +1392,16 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
}
/* moves a file or directory to another directory */
@ -400,7 +399,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
DWORD i;
INT mismatched = 0;
@@ -1415,14 +1412,12 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
@@ -1417,14 +1414,12 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
if (!flTo->dwNumFiles)
return ERROR_FILE_NOT_FOUND;
@ -417,7 +416,7 @@ index e4c7449f05e..028a1d76e4f 100644
flFrom->dwNumFiles > flTo->dwNumFiles)
{
return ERROR_CANCELLED;
@@ -1435,7 +1430,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
@@ -1437,7 +1432,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
return ret;
}
@ -426,7 +425,7 @@ index e4c7449f05e..028a1d76e4f 100644
mismatched = flFrom->dwNumFiles - flTo->dwNumFiles;
fileDest = &flTo->feFiles[0];
@@ -1446,7 +1441,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
@@ -1448,7 +1443,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
if (!PathFileExistsW(fileDest->szDirectory))
return ERROR_CANCELLED;
@ -435,7 +434,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
if (i >= flTo->dwNumFiles)
break;
@@ -1460,9 +1455,9 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
@@ -1462,9 +1457,9 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
}
if (fileDest->bExists && IsAttribDir(fileDest->attributes))
@ -447,7 +446,7 @@ index e4c7449f05e..028a1d76e4f 100644
}
if (mismatched > 0)
@@ -1477,7 +1472,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
@@ -1479,7 +1474,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
}
/* the FO_RENAME files */
@ -456,7 +455,7 @@ index e4c7449f05e..028a1d76e4f 100644
{
const FILE_ENTRY *feFrom;
const FILE_ENTRY *feTo;
@@ -1499,7 +1494,7 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1501,7 +1496,7 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
if (feTo->bExists)
return ERROR_ALREADY_EXISTS;
@ -465,7 +464,7 @@ index e4c7449f05e..028a1d76e4f 100644
}
/* alert the user if an unsupported flag is used */
@@ -1546,16 +1541,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1548,16 +1543,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
switch (lpFileOp->wFunc)
{
case FO_COPY:
@ -487,5 +486,5 @@ index e4c7449f05e..028a1d76e4f 100644
default:
ret = ERROR_INVALID_PARAMETER;
--
2.27.0
2.33.0

View File

@ -1 +1 @@
f232252951fec637758f6b2c4eeda1c0e0650310
8547aac2dcfcae9060d0a630c9f80af7bcaf19b4