From e7d3aadec3b99f0e0a1597c40cffcb38fabee641 Mon Sep 17 00:00:00 2001 From: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:04:23 +0200 Subject: [PATCH] [runner]Fix issue on files cleanup when directory doesn't exist (#20063) * Fix issue when directory doesn't exist * Address PR comment --- src/runner/main.cpp | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/runner/main.cpp b/src/runner/main.cpp index ae72211669..98f9077a14 100644 --- a/src/runner/main.cpp +++ b/src/runner/main.cpp @@ -300,19 +300,23 @@ void cleanup_updates() return; } - // Msi and exe files - for (const auto& entry : std::filesystem::directory_iterator(updating::get_pending_updates_path())) + auto update_dir = updating::get_pending_updates_path(); + if (std::filesystem::exists(update_dir)) { - auto entryPath = entry.path().wstring(); - std::transform(entryPath.begin(), entryPath.end(), entryPath.begin(), ::towlower); - - if (entryPath.ends_with(L".msi") || entryPath.ends_with(L".exe")) + // Msi and exe files + for (const auto& entry : std::filesystem::directory_iterator(update_dir)) { - std::error_code err; - std::filesystem::remove(entry, err); - if (err.value()) + auto entryPath = entry.path().wstring(); + std::transform(entryPath.begin(), entryPath.end(), entryPath.begin(), ::towlower); + + if (entryPath.ends_with(L".msi") || entryPath.ends_with(L".exe")) { - Logger::warn("Failed to delete installer file {}. {}", entry.path().string(), err.message()); + std::error_code err; + std::filesystem::remove(entry, err); + if (err.value()) + { + Logger::warn("Failed to delete installer file {}. {}", entry.path().string(), err.message()); + } } } } @@ -320,17 +324,20 @@ void cleanup_updates() // Log files auto rootPath{ PTSettingsHelper::get_root_save_folder_location() }; auto currentVersion = left_trim(get_product_version(), L"v"); - for (const auto& entry : std::filesystem::directory_iterator(rootPath)) + if (std::filesystem::exists(rootPath)) { - auto entryPath = entry.path().wstring(); - std::transform(entryPath.begin(), entryPath.end(), entryPath.begin(), ::towlower); - if (entry.is_regular_file() && entryPath.ends_with(L".log") && entryPath.find(currentVersion) == std::string::npos) + for (const auto& entry : std::filesystem::directory_iterator(rootPath)) { - std::error_code err; - std::filesystem::remove(entry, err); - if (err.value()) + auto entryPath = entry.path().wstring(); + std::transform(entryPath.begin(), entryPath.end(), entryPath.begin(), ::towlower); + if (entry.is_regular_file() && entryPath.ends_with(L".log") && entryPath.find(currentVersion) == std::string::npos) { - Logger::warn("Failed to delete log file {}. {}", entry.path().string(), err.message()); + std::error_code err; + std::filesystem::remove(entry, err); + if (err.value()) + { + Logger::warn("Failed to delete log file {}. {}", entry.path().string(), err.message()); + } } } }