summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/PluginUpdater/src/DlgListNew.cpp10
-rw-r--r--plugins/PluginUpdater/src/DlgUpdate.cpp3
-rw-r--r--plugins/PluginUpdater/src/version.h2
-rw-r--r--src/mir_app/src/profilemanager.cpp5
-rw-r--r--src/mir_core/src/Windows/fileutil.cpp4
5 files changed, 16 insertions, 8 deletions
diff --git a/plugins/PluginUpdater/src/DlgListNew.cpp b/plugins/PluginUpdater/src/DlgListNew.cpp
index f406d96b3b..44fa701c89 100644
--- a/plugins/PluginUpdater/src/DlgListNew.cpp
+++ b/plugins/PluginUpdater/src/DlgListNew.cpp
@@ -324,7 +324,15 @@ public:
}
Netlib_CloseHandle(nlc);
- RemoveBackupFolders();
+ int iFileCount = 0; // considering files . & ..
+ for (auto &it : MFilePath(wszBackupFolder).search())
+ if (mir_wstrcmp(it.getPath(), L".") && mir_wstrcmp(it.getPath(), L".."))
+ iFileCount++;
+
+ if (iFileCount == 0)
+ PU::SafeDeleteDirectory(wszBackupFolder);
+ else
+ RemoveBackupFolders();
ShowPopup(TranslateT("Plugin Updater"), TranslateT("Download complete"), POPUP_TYPE_INFO);
diff --git a/plugins/PluginUpdater/src/DlgUpdate.cpp b/plugins/PluginUpdater/src/DlgUpdate.cpp
index 9a13d78737..d93f499a7a 100644
--- a/plugins/PluginUpdater/src/DlgUpdate.cpp
+++ b/plugins/PluginUpdater/src/DlgUpdate.cpp
@@ -618,8 +618,7 @@ static int ScanFolder(const wchar_t *pwszFolder, size_t cbBaseLen, const wchar_t
int count = 0;
- MFilePath wszBuf;
- wszBuf.Format(L"%s\\*", pwszFolder);
+ MFilePath wszBuf(pwszFolder);
for (auto &ff: wszBuf.search()) {
TFileName wszNewName;
diff --git a/plugins/PluginUpdater/src/version.h b/plugins/PluginUpdater/src/version.h
index fbfd07b5cd..8269e41d35 100644
--- a/plugins/PluginUpdater/src/version.h
+++ b/plugins/PluginUpdater/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 2
#define __RELEASE_NUM 1
-#define __BUILD_NUM 5
+#define __BUILD_NUM 6
#include <stdver.h>
diff --git a/src/mir_app/src/profilemanager.cpp b/src/mir_app/src/profilemanager.cpp
index ab7f00edf0..2a8d409a42 100644
--- a/src/mir_app/src/profilemanager.cpp
+++ b/src/mir_app/src/profilemanager.cpp
@@ -103,10 +103,7 @@ static BOOL EnumProfilesForList(const wchar_t *tszFullPath, wchar_t *profile, CC
static int findProfiles(CCtrlListView &list, const wchar_t *szProfile)
{
// find in Miranda NG profile subfolders
- MFilePath searchspec;
- searchspec.Format(L"%s\\*.*", g_profileDir);
-
- for (auto &it: searchspec.search()) {
+ for (auto &it: MFilePath(g_profileDir).search()) {
// find all subfolders except "." and ".."
if (!it.isDir() || !wcscmp(it.getPath(), L".") || !wcscmp(it.getPath(), L".."))
continue;
diff --git a/src/mir_core/src/Windows/fileutil.cpp b/src/mir_core/src/Windows/fileutil.cpp
index a0dcee68f6..a7494bc8b7 100644
--- a/src/mir_core/src/Windows/fileutil.cpp
+++ b/src/mir_core/src/Windows/fileutil.cpp
@@ -74,5 +74,9 @@ bool MFilePath::move(const wchar_t *pwszDest)
MFilePath::MFileIterator MFilePath::search()
{
+ DWORD dwAttr = GetFileAttributesW(c_str());
+ if (dwAttr != -1 && (dwAttr & FILE_ATTRIBUTE_DIRECTORY))
+ return MFileIterator(*this + L"\\*");
+
return MFileIterator(c_str());
}