fileutils: use std::filesystem::remove_all, check for error
Change-Id: I46a4563e24f3a427931be886b726a585fe823eff
diff --git a/src/fileutils.cpp b/src/fileutils.cpp
index 23aceff..6c75ef5 100644
--- a/src/fileutils.cpp
+++ b/src/fileutils.cpp
@@ -328,18 +328,24 @@
return !RemoveDirectory(dhtnet::to_wstring(path.string()).c_str());
#endif
- return std::remove(path.string().c_str());
+ std::error_code ec;
+ std::filesystem::remove(path, ec);
+ return ec.value();
}
int
removeAll(const std::filesystem::path& path, bool erase)
{
+ std::error_code ec;
+ if (not erase) {
+ std::filesystem::remove_all(path, ec);
+ return ec.value();
+ }
if (path.empty())
return -1;
- auto status = std::filesystem::status(path);
- if (std::filesystem::is_directory(status) and not std::filesystem::is_symlink(status)) {
- std::error_code ec;
+ auto status = std::filesystem::status(path, ec);
+ if (!ec && std::filesystem::is_directory(status) and not std::filesystem::is_symlink(status)) {
for (const auto& entry: std::filesystem::directory_iterator(path, ec)) {
removeAll(entry.path(), erase);
}