29 #define IsAttrib(x, y) ((INVALID_FILE_ATTRIBUTES != (x)) && ((x) & (y))) 30 #define IsAttribFile(x) (!((x) & FILE_ATTRIBUTE_DIRECTORY)) 31 #define IsAttribDir(x) IsAttrib(x, FILE_ATTRIBUTE_DIRECTORY) 32 #define IsDotDir(x) ((x[0] == '.') && ((x[1] == 0) || ((x[1] == '.') && (x[2] == 0)))) 36 #define NEW_FILENAME_ON_COPY_TRIES 100 50 #define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026 225 switch (nKindOfDialog)
288 FIXME(
" Unhandled nKindOfDialog %d stub\n", nKindOfDialog);
301 assert(nKindOfDialog >= 0 && nKindOfDialog < 32);
302 if (
op && (
op->dwYesToAllMask & (1 << nKindOfDialog)))
312 szText, 0, 0, szBuffer,
sizeof(szBuffer), (
va_list*)
args);
320 op->dwYesToAllMask |= (1 << nKindOfDialog);
326 op->req->fAnyOperationsAborted =
TRUE;
395 op->bCancelled |=
op->progress->HasUserCancelled();
481 switch (
op->req->wFunc)
504 op->progress->SetLine(1, szPreflight,
false,
NULL);
511 LPWSTR fileSpecS, pathSpecS, fileSpecD, pathSpecD;
512 WCHAR szFolderS[50], szFolderD[50], szFinalString[260];
522 pathSpecS = fileSpecS;
526 lstrcpynW(szFolderS, pathSpecS,
min(50, fileSpecS - pathSpecS));
529 switch (
op->req->wFunc)
537 pathSpecD = fileSpecD;
541 lstrcpynW(szFolderD, pathSpecD,
min(50, fileSpecD - pathSpecD));
551 op->szBuilderString, 0, 0, szFinalString,
sizeof(szFinalString), (
va_list*)
args);
553 op->progress->SetLine(1, fileSpecS,
false,
NULL);
554 op->progress->SetLine(2, szFinalString,
false,
NULL);
563 DWORD dwStreamNumber,
564 DWORD dwCallbackReason,
578 op->completedSize.QuadPart += TotalFileSize.
QuadPart;
580 op->progress->SetProgress64(
op->completedSize.QuadPart -
583 ,
op->totalSize.QuadPart);
586 op->bCancelled =
op->progress->HasUserCancelled();
620 tmp.
u.LowPart = wfd.nFileSizeLow;
621 tmp.
u.HighPart = wfd.nFileSizeHigh;
675 CStringW strTitle, strMask, strText;
760 WCHAR tmp[] = {
L"A:\\" };
806 TRACE(
"[shell32, SHNotifyCopyFileW] STILL SHIT\n");
941 while (*pSlash && *pSlash !=
'\\') pSlash++;
990 if (b_FileMask &&
IsAttribDir(wfd.dwFileAttributes))
992 dwAttr = wfd.dwFileAttributes;
1019 PCSTR tmpSrc = strSrc;
1026 }
while (
size != 1);
1049 *pStrDest = strDest;
1071 int errCode, retCode;
1101 ERR(
"SHFileOperationW failed with 0x%x\n", retCode);
1130 list->num_alloc * 2 *
sizeof(*newx) );
1131 list->feFiles = newx;
1132 list->num_alloc *= 2;
1152 dwLen =
ptr - szFile + 1;
1168 DWORD dwDirLen, dwFullLen;
1174 dwDirLen =
ptr - szWildCard + 1;
1176 dwFullLen = dwDirLen +
lstrlenW(szFileName) + 1;
1179 lstrcpynW(szFullPath, szWildCard, dwDirLen + 1);
1207 file->attributes = wfd.dwFileAttributes;
1293 if (!flList || !flList->
feFiles)
1373 if (!
op->bManyItems)
1384 szFrom[
lstrlenW(szFrom) + 1] =
'\0';
1579 op->req->fAnyOperationsAborted =
TRUE;
1584 if (
op->progress !=
NULL)
1585 op->bCancelled |=
op->progress->HasUserCancelled();
1635 op->req->fAnyOperationsAborted =
TRUE;
1678 op->req->fAnyOperationsAborted =
TRUE;
1707 if (
op->progress !=
NULL)
1708 op->bCancelled |=
op->progress->HasUserCancelled();
1728 szFrom[
lstrlenW(szFrom) + 1] =
'\0';
1731 szTo[
lstrlenW(szDestPath) + 1] =
'\0';
1808 if (mismatched && !fileDest->
bExists)
1821 if (
op->progress !=
NULL)
1822 op->bCancelled |=
op->progress->HasUserCancelled();
1877 if (fFlags & wUnsupportedFlags)
1878 FIXME(
"Unsupported flags: %04x\n", fFlags);
1899 for (
k = 0;
k < dwNumDest; ++
k)
1943 if (cchFrom <= cchTo)
1945 WCHAR ch = szTo[cchFrom];
2009 op.totalSize.QuadPart = 0ull;
2010 op.completedSize.QuadPart = 0ull;
2014 ret = validate_operation(lpFileOp, &flFrom, &flTo);
2021 CLSCTX_INPROC_SERVER,
2031 switch (lpFileOp->
wFunc)
2051 op.progress->StopProgressDialog();
2052 op.progress->Release();
2220 char root[] =
"A:\\";
2240 FIXME(
"unimplemented flags 0x%08x\n",
flags);
2246 if (last_slash ==
NULL)
2254 realpath = temppath;
2265 FIXME(
"treating SHPPFW_ASKDIRCREATE as SHPPFW_DIRCREATE\n");
2313 entryToCount = &
from->feFiles[
i];
2328 WCHAR *pwszFilename = pwszBuf + cchBuf;
2329 size_t cchFilenameMax =
MAX_PATH - cchBuf;
2330 if (!cchFilenameMax)
2334 *(pwszFilename++) =
'\\';
2344 ERR(
"FindFirstFileW %ls failed\n", pwszBuf);
2353 if (!
wcscmp(wfd.cFileName,
L".") || !
wcscmp(wfd.cFileName,
L".."))
2363 FileSize.
u.HighPart = wfd.nFileSizeHigh;
2369 if (
op->progress !=
NULL)
2370 op->bCancelled =
op->progress->HasUserCancelled();
static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles)
BOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes)
#define ERROR_INVALID_PARAMETER
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
#define IDS_FILEOOP_MOVING
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
#define ASK_CANT_TRASH_ITEM
static HRESULT rename_files(FILE_OPERATION *op, const FILE_LIST *flFrom, const FILE_LIST *flTo)
static void SHELL32_FreeUnicodeBuf(LPWSTR wPath)
LPWSTR WINAPI StrPBrkW(LPCWSTR lpszStr, LPCWSTR lpszMatch)
GLint GLint GLsizei width
#define ERROR_FILE_EXISTS
#define FOF_NOCOPYSECURITYATTRIBS
#define FOF_NO_CONNECTED_ELEMENTS
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
#define IDS_MOVEERRORSAMEFOLDER
#define HRESULT_FROM_WIN32(x)
UINT WINAPI GetDriveTypeA(IN LPCSTR lpRootPathName)
#define IDI_SHELL_CONFIRM_DELETE
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
DWORD WINAPI _FileOpCountManager(FILE_OPERATION *op, const FILE_LIST *flFrom)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
static INT_PTR ConfirmMsgBox_Paint(HWND hDlg)
#define MOVEFILE_REPLACE_EXISTING
struct _ULARGE_INTEGER::@3916 u
HDC WINAPI GetDC(_In_opt_ HWND)
GLsizei const GLchar ** path
#define FILE_ATTRIBUTE_SYSTEM
static INT_PTR ConfirmMsgBox_Init(HWND hDlg, LPARAM lParam)
GLdouble GLdouble GLdouble r
static DWORD SHELL32_AnsiToUnicodeBuf(LPCSTR aPath, LPWSTR *wPath, DWORD minChars)
#define IDD_YESTOALL_MSGBOX
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define FORMAT_MESSAGE_FROM_STRING
#define IDS_OVERWRITEFILE_CAPTION
#define IDS_DELETEITEM_CAPTION
LPWSTR WINAPI StrCpyNW(LPWSTR dst, LPCWSTR src, int count)
static void confirm_msg_move_button(HWND hDlg, INT iId, INT *xPos, INT yOffset, BOOL bShow)
#define GetCurrentDirectoryW(x, y)
#define ASK_DELETE_SELECTED
#define ERROR_NO_MORE_SEARCH_HANDLES
DWORD WINAPI GetTickCount(VOID)
static CStringW try_find_new_name(LPCWSTR szDestPath)
static HRESULT delete_files(FILE_OPERATION *op, const FILE_LIST *flFrom)
#define IDS_OVERWRITEFOLDER_TEXT
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
#define INVALID_HANDLE_VALUE
#define FOF_WANTNUKEWARNING
#define CALLBACK_STREAM_SWITCH
#define IDS_COPYERRORSAME
DWORD WINAPI GetLastError(VOID)
EXTERN_C DWORD WINAPI SheGetDirW(DWORD drive, LPWSTR buffer)
void __cdecl Format(UINT nFormatID,...)
BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define ASK_TRASH_MULTIPLE_ITEM
void WINAPI SHFreeNameMappings(HANDLE hNameMapping)
static DWORD SHNotifyMoveFileW(FILE_OPERATION *op, LPCWSTR src, LPCWSTR dest, BOOL isdir)
EXTERN_C INT WINAPI RealDriveType(INT drive, BOOL bQueryNet)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
static HRESULT copy_files(FILE_OPERATION *op, BOOL multiDest, const FILE_LIST *flFrom, FILE_LIST *flTo)
ULARGE_INTEGER completedSize
#define IID_PPV_ARG(Itype, ppType)
static void _SetOperationTitle(FILE_OPERATION *op)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
#define IDI_SHELL_FOLDER_MOVE2
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
EXTERN_C int WINAPI IsNetDrive(int drive)
BOOL WINAPI PathAppendW(LPWSTR lpszPath, LPCWSTR lpszAppend)
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
#define IDS_MOVEERRORTITLE
EXTERN_C HRESULT WINAPI SHPathPrepareForWriteW(HWND hwnd, IUnknown *modless, LPCWSTR path, DWORD flags)
#define MB_ICONEXCLAMATION
#define IDS_DELETEFOLDER_CAPTION
IProgressDialog * progress
BOOL fAnyOperationsAborted
static BOOL _FileOpCount(FILE_OPERATION *op, LPWSTR pwszBuf, BOOL bFolder, DWORD *ticks)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
static void check_flags(FILEOP_FLAGS fFlags)
#define IDC_YESTOALL_MESSAGE
#define IDS_CREATEFOLDER_DENIED
#define IDS_MOVEERRORSAME
static DWORD SHNotifyCreateDirectoryW(LPCWSTR path, LPSECURITY_ATTRIBUTES sec)
#define ERROR_ACCESS_DENIED
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
EXTERN_C BOOL WINAPI Win32RemoveDirectoryW(LPCWSTR path)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI MoveFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName)
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
static void destroy_file_list(FILE_LIST *flList)
static DWORD move_files(FILE_OPERATION *op, BOOL multiDest, const FILE_LIST *flFrom, const FILE_LIST *flTo)
#define FOF_NOCONFIRMATION
LPCWSTR lpszProgressTitle
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
static BOOL SHIsCdRom(LPCWSTR path)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
#define IDS_FILEOOP_DELETING
static INT_PTR CALLBACK ConfirmMsgBoxProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static const WCHAR sizeW[]
static void copy_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, const FILE_ENTRY *feTo)
static BOOL SHELL_ConfirmIDs(int nKindOfDialog, SHELL_ConfirmIDstruc *ids)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
#define ERROR_FILE_NOT_FOUND
static void parse_wildcard_files(FILE_LIST *flList, LPCWSTR szFile, LPDWORD pdwListIndex)
BOOL WINAPI RemoveDirectoryW(IN LPCWSTR lpPathName)
#define FORMAT_MESSAGE_FROM_SYSTEM
#define ASK_DELETE_FOLDER
#define FILE_ATTRIBUTE_DIRECTORY
#define IDS_DELETEITEM_TEXT
static void __inline grow_list(FILE_LIST *list)
#define FOF_WANTMAPPINGHANDLE
static int CALLBACK _DestroyCallback(void *p, void *pData)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
static void add_file_to_entry(FILE_ENTRY *feFile, LPCWSTR szFile)
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
WINE_DEFAULT_DEBUG_CHANNEL(shell)
#define ASK_DELETE_MULTIPLE_ITEM
#define IDI_SHELL_TRASH_FILE
#define SHPPFW_ASKDIRCREATE
#define FILE_ATTRIBUTE_READONLY
int WINAPI GetSystemMetrics(_In_ int)
int WINAPI SHCreateDirectoryExA(HWND hWnd, LPCSTR path, LPSECURITY_ATTRIBUTES sec)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define INVALID_FILE_ATTRIBUTES
static BOOL SHELL_ConfirmDialogW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir, FILE_OPERATION *op)
#define IDS_TRASHFOLDER_TEXT
TCHAR szTitle[MAX_LOADSTRING]
static DWORD SHNotifyRemoveDirectoryW(LPCWSTR path)
static BOOL copy_file_to_file(FILE_OPERATION *op, const WCHAR *szFrom, const WCHAR *szTo)
#define IDS_FILEOOP_COPYING
#define FOF_SIMPLEPROGRESS
BOOL fAnyOperationsAborted
static void create_dest_dirs(LPCWSTR szDestDir)
static void move_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWSTR szDestPath)
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
EXTERN_C DWORD WINAPI SheChangeDirA(LPSTR path)
static DWORD SHNotifyCopyFileW(FILE_OPERATION *op, LPCWSTR src, LPCWSTR dest, BOOL bFailIfExists)
#define ASK_OVERWRITE_FILE
BOOL WINAPI SetCurrentDirectoryA(IN LPCSTR lpPathName)
#define IDS_OVERWRITEFILE_TEXT
#define IDS_CREATEFOLDER_CAPTION
#define IDS_COPYERRORSUBFOLDER
#define IDS_DELETEMULTIPLE_TEXT
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
EXTERN_C DWORD WINAPI SheChangeDirW(LPWSTR path)
BOOL WINAPI CopyFileExW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, IN LPVOID lpData OPTIONAL, IN LPBOOL pbCancel OPTIONAL, IN DWORD dwCopyFlags)
#define FOF_NORECURSEREPARSE
#define IDS_FILEOOP_PREFLIGHT
#define IDC_YESTOALL_ICON
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
int WINAPIV wnsprintfW(LPWSTR lpOut, int cchLimitIn, LPCWSTR lpFmt,...)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
static DWORD SHNotifyDeleteFileW(FILE_OPERATION *op, LPCWSTR path)
EXTERN_C BOOL WINAPI Win32CreateDirectoryW(LPCWSTR path, LPSECURITY_ATTRIBUTES sec)
EXTERN_C DWORD WINAPI Win32DeleteFileW(LPCWSTR path)
EXTERN_C HRESULT WINAPI SHPathPrepareForWriteA(HWND hwnd, IUnknown *modless, LPCSTR path, DWORD flags)
GLint GLint GLsizei GLsizei height
DWORD CALLBACK SHCopyProgressRoutine(LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData)
#define FOF_RENAMEONCOLLISION
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
int WINAPI SHCreateDirectory(HWND hWnd, LPCWSTR path)
void WINAPI DSA_DestroyCallback(HDSA hdsa, PFNDSAENUMCALLBACK enumProc, LPVOID lParam)
static BOOL confirm_delete_list(HWND hWnd, DWORD fFlags, BOOL fTrash, const FILE_LIST *flFrom)
static DWORD SHFindAttrW(LPCWSTR pName, BOOL fileOnly)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define IDS_COPYERRORTITLE
#define IDS_MOVEERRORSUBFOLDER
BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR lpszPath)
#define shell32_hInstance
int WINAPI lstrlenA(LPCSTR lpString)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
void shell(int argc, const char *argv[])
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES sec)
BOOL TRASH_TrashFile(LPCWSTR wszPath)
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
#define NEW_FILENAME_ON_COPY_TRIES
DWORD WINAPI GetCurrentDirectoryA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
LPWSTR WINAPI StrChrW(LPCWSTR lpszStr, WCHAR ch)
#define IDS_DELETESELECTED_TEXT
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
BOOL WINAPI MoveFileWithProgressW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine, IN LPVOID lpData, IN DWORD dwFlags)
#define ASK_OVERWRITE_FOLDER
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define MultiByteToWideChar
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
void WINAPI SHFree(LPVOID pv)
static DWORD _ConvertAtoW(PCSTR strSrc, PCWSTR *pStrDest, BOOL isList)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
EXTERN_C HRESULT WINAPI SHIsFileAvailableOffline(LPCWSTR path, LPDWORD status)
BOOL SHELL_DeleteDirectoryW(FILE_OPERATION *op, LPCWSTR pszDir, BOOL bShowUI)
#define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND
char * strcpy(char *DstString, const char *SrcString)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define IDS_TRASHMULTIPLE_TEXT
char * cleanup(char *str)
struct _LARGE_INTEGER::@2247 u
#define SHPPFW_IGNOREFILENAME
BOOL TRASH_CanTrashFile(LPCWSTR wszPath)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define ERROR_PATH_NOT_FOUND
static LPWSTR wildcard_to_file(LPCWSTR szWildCard, LPCWSTR szFileName)
#define IDS_TRASHITEM_TEXT
#define MAKEINTRESOURCEW(i)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define ERROR_ALREADY_EXISTS
#define FOF_MULTIDESTFILES
#define ERROR_GEN_FAILURE
static void _SetOperationTexts(FILE_OPERATION *op, LPCWSTR src, LPCWSTR dest)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
LPWSTR WINAPI StrRChrW(LPCWSTR str, LPCWSTR end, WORD ch)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
LPWSTR WINAPI PathCombineW(LPWSTR lpszDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
int SHELL_ConfirmMsgBox(HWND hWnd, LPWSTR lpszText, LPWSTR lpszCaption, HICON hIcon, BOOL bYesToAll)
#define ERROR_BAD_PATHNAME
#define IDS_CANTTRASH_TEXT
static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWSTR szDestPath)
static void move_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, const FILE_ENTRY *feTo)
#define HeapFree(x, y, z)
#define IDS_FILEOOP_FROM_TO
EXTERN_C DWORD WINAPI SheGetDirA(DWORD drive, LPSTR buffer)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
#define ERROR_FILENAME_EXCED_RANGE
struct _FILE_ENTRY FILE_ENTRY
BOOL WINAPI FindClose(HANDLE hFindFile)