summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-12-11 02:06:28 +0100
committerGitHub <noreply@github.com>2020-12-11 02:06:28 +0100
commit2e63cc8313f01b7720f555ba72219f134eb298fa (patch)
tree1b1cd45f9d8970d15e3dd1bf04c7136127bd223d /Source/Core
parent75899b0e1121f01afdd606e1dd3a5822fa408530 (diff)
parent760e7e664a38065c0bd1dbe978852ca85a48a160 (diff)
Merge pull request #9307 from Dentomologist/add-deleted-file-missing-warning-flag
Add File::Delete and File::DeleteDir warning flags
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/FileUtil.cpp19
-rw-r--r--Source/Core/Common/FileUtil.h12
2 files changed, 26 insertions, 5 deletions
diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp
index 5e8868da21..0d41395209 100644
--- a/Source/Core/Common/FileUtil.cpp
+++ b/Source/Core/Common/FileUtil.cpp
@@ -135,7 +135,7 @@ bool IsFile(const std::string& path)
// Deletes a given filename, return true on success
// Doesn't supports deleting a directory
-bool Delete(const std::string& filename)
+bool Delete(const std::string& filename, IfAbsentBehavior behavior)
{
INFO_LOG_FMT(COMMON, "Delete: file {}", filename);
@@ -154,7 +154,10 @@ bool Delete(const std::string& filename)
// Return true because we care about the file not being there, not the actual delete.
if (!file_info.Exists())
{
- WARN_LOG_FMT(COMMON, "Delete: {} does not exist", filename);
+ if (behavior == IfAbsentBehavior::ConsoleWarning)
+ {
+ WARN_LOG_FMT(COMMON, "Delete: {} does not exist", filename);
+ }
return true;
}
@@ -253,10 +256,20 @@ bool CreateFullPath(const std::string& fullPath)
}
// Deletes a directory filename, returns true on success
-bool DeleteDir(const std::string& filename)
+bool DeleteDir(const std::string& filename, IfAbsentBehavior behavior)
{
INFO_LOG_FMT(COMMON, "DeleteDir: directory {}", filename);
+ // Return true because we care about the directory not being there, not the actual delete.
+ if (!File::Exists(filename))
+ {
+ if (behavior == IfAbsentBehavior::ConsoleWarning)
+ {
+ WARN_LOG_FMT(COMMON, "DeleteDir: {} does not exist", filename);
+ }
+ return true;
+ }
+
// check if a directory
if (!IsDirectory(filename))
{
diff --git a/Source/Core/Common/FileUtil.h b/Source/Core/Common/FileUtil.h
index e593a0541f..7e0b2e6990 100644
--- a/Source/Core/Common/FileUtil.h
+++ b/Source/Core/Common/FileUtil.h
@@ -136,12 +136,20 @@ bool CreateDir(const std::string& filename);
// Creates the full path of fullPath returns true on success
bool CreateFullPath(const std::string& fullPath);
+enum class IfAbsentBehavior
+{
+ ConsoleWarning,
+ NoConsoleWarning
+};
+
// Deletes a given filename, return true on success
// Doesn't supports deleting a directory
-bool Delete(const std::string& filename);
+bool Delete(const std::string& filename,
+ IfAbsentBehavior behavior = IfAbsentBehavior::ConsoleWarning);
// Deletes a directory filename, returns true on success
-bool DeleteDir(const std::string& filename);
+bool DeleteDir(const std::string& filename,
+ IfAbsentBehavior behavior = IfAbsentBehavior::ConsoleWarning);
// renames file srcFilename to destFilename, returns true on success
bool Rename(const std::string& srcFilename, const std::string& destFilename);