From 5bad361121983263f63dd5e47e5c25fbec071378 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Mon, 20 May 2024 19:44:07 +0200 Subject: [PATCH] Fixed an issue where adding trailing directory separators to the MediaDirectory setting could make the Orphaned data cleanup utility remove too many files --- es-app/src/guis/GuiOrphanedDataCleanup.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/es-app/src/guis/GuiOrphanedDataCleanup.cpp b/es-app/src/guis/GuiOrphanedDataCleanup.cpp index b925bf649..b30943614 100644 --- a/es-app/src/guis/GuiOrphanedDataCleanup.cpp +++ b/es-app/src/guis/GuiOrphanedDataCleanup.cpp @@ -22,7 +22,6 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function reloadCallb , mGrid {glm::ivec2 {4, 11}} , mReloadCallback {reloadCallback} , mCursorPos {0} - , mMediaDirectory {FileData::getMediaDirectory()} , mMediaTypes {"3dboxes", "backcovers", "covers", "fanart", "manuals", "marquees", "miximages", "physicalmedia", "screenshots", "titlescreens", "videos"} @@ -36,6 +35,23 @@ GuiOrphanedDataCleanup::GuiOrphanedDataCleanup(std::function reloadCallb , mCaseSensitiveFilesystem {true} , mCleanupType {CleanupType::MEDIA} { + // Make sure we always have a single trailing directory separator for the media directory. + mMediaDirectory = FileData::getMediaDirectory(); + mMediaDirectory.erase(std::find_if(mMediaDirectory.rbegin(), mMediaDirectory.rend(), + [](char c) { return c != '/'; }) + .base(), + mMediaDirectory.end()); + + mMediaDirectory.erase(std::find_if(mMediaDirectory.rbegin(), mMediaDirectory.rend(), + [](char c) { return c != '\\'; }) + .base(), + mMediaDirectory.end()); +#if defined(_WIN64) + mMediaDirectory.append("\\"); +#else + mMediaDirectory.append("/"); +#endif + addChild(&mBackground); addChild(&mGrid);