From f4051cf4da1635d66e8738d65dd6564dc4998df8 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 26 Nov 2023 12:09:14 +0300 Subject: =?UTF-8?q?fixes=20#3965=20(NewStory:=20=D0=BD=D0=B5=20=D1=81?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=B0=D1=82=D1=8C=20=D0=B8=D1=81=D1=85=D0=BE?= =?UTF-8?q?=D0=B4=D1=8F=D1=89=D0=B8=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB=20?= =?UTF-8?q?=D1=81=20=D0=B4=D0=B8=D1=81=D0=BA=D0=B0=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B1=D1=8B=D1=82=D0=B8=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mir_app/src/file.cpp | 14 ++++++++++---- src/mir_app/src/file.h | 1 + src/mir_app/src/srmm_util.cpp | 8 +++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/mir_app/src/file.cpp b/src/mir_app/src/file.cpp index 6810acb103..aaa5477a4b 100644 --- a/src/mir_app/src/file.cpp +++ b/src/mir_app/src/file.cpp @@ -193,13 +193,19 @@ static int SRFilePreShutdown(WPARAM, LPARAM) return 0; } -static int SRFileEventDeleted(WPARAM /*hContact*/, LPARAM hDbEvent) +static int SRFileEventDeleted(WPARAM hContact, LPARAM hDbEvent) { DB::EventInfo dbei(hDbEvent); - if (dbei && dbei.eventType == EVENTTYPE_FILE && (dbei.flags & DBEF_SENT) == 0) { + if (dbei && dbei.eventType == EVENTTYPE_FILE) { DB::FILE_BLOB blob(dbei); - if (auto *pwszName = blob.getLocalName()) - DeleteFileW(pwszName); + if (auto *pwszName = blob.getLocalName()) { + wchar_t wszReceiveFolder[MAX_PATH]; + GetContactSentFilesDir(hContact, wszReceiveFolder, _countof(wszReceiveFolder)); + + // we don't remove sent files, located outside Miranda's folder for sent offline files + if ((dbei.flags & DBEF_SENT) == 0 || wcsnicmp(pwszName, wszReceiveFolder, wcslen(wszReceiveFolder))) + DeleteFileW(pwszName); + } } return 0; diff --git a/src/mir_app/src/file.h b/src/mir_app/src/file.h index 9a21931359..62931d81b4 100644 --- a/src/mir_app/src/file.h +++ b/src/mir_app/src/file.h @@ -84,6 +84,7 @@ void LaunchRecvDialog(CLISTEVENT *cle); void RemoveInvalidFilenameChars(wchar_t *tszString); void RemoveInvalidPathChars(wchar_t *tszString); void GetContactReceivedFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir, BOOL substVars); +void GetContactSentFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir); void GetReceivedFilesDir(wchar_t *szDir, int cchDir); int BrowseForFolder(HWND hwnd, wchar_t *szPath); diff --git a/src/mir_app/src/srmm_util.cpp b/src/mir_app/src/srmm_util.cpp index c064aa6ce0..c8e1747e67 100644 --- a/src/mir_app/src/srmm_util.cpp +++ b/src/mir_app/src/srmm_util.cpp @@ -153,11 +153,17 @@ void OFDTHREAD::ResetFileName(const wchar_t *pwszNewName) ///////////////////////////////////////////////////////////////////////////////////////// +void GetContactSentFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir) +{ + mir_snwprintf(szDir, cchDir, L"%s\\dlFiles\\%d\\", VARSW(L"%miranda_userdata%").get(), hContact); +} + + static void GenerateLocalName(const DB::EventInfo &dbei, DB::FILE_BLOB &blob, MCONTACT hContact) { wchar_t wszReceiveFolder[MAX_PATH]; if (dbei.flags & DBEF_SENT) // don't mix sent & received files - mir_snwprintf(wszReceiveFolder, L"%s\\dlFiles\\%d\\", VARSW(L"%miranda_userdata%").get(), hContact); + GetContactSentFilesDir(hContact, wszReceiveFolder, _countof(wszReceiveFolder)); else GetContactReceivedFilesDir(hContact, wszReceiveFolder, _countof(wszReceiveFolder), true); CreateDirectoryTreeW(wszReceiveFolder); -- cgit v1.2.3