filesystem: use std for DeleteFolder
Remove custom platform implementation of `DeleteFolder` and replace two uses with `std::filesystem::remove_all` which removes a file or directory with all its contents.
This commit is contained in:
parent
69bcf59c79
commit
df65de231f
|
@ -41,10 +41,6 @@ std::filesystem::path GetUserFolder();
|
||||||
// attempting to create it.
|
// attempting to create it.
|
||||||
bool CreateParentFolder(const std::filesystem::path& path);
|
bool CreateParentFolder(const std::filesystem::path& path);
|
||||||
|
|
||||||
// Recursively deletes the files and folders at the specified path.
|
|
||||||
// Returns true if the path was found and removed.
|
|
||||||
bool DeleteFolder(const std::filesystem::path& path);
|
|
||||||
|
|
||||||
// Creates an empty file at the given path.
|
// Creates an empty file at the given path.
|
||||||
bool CreateFile(const std::filesystem::path& path);
|
bool CreateFile(const std::filesystem::path& path);
|
||||||
|
|
||||||
|
|
|
@ -112,12 +112,6 @@ static int removeCallback(const char* fpath, const struct stat* sb,
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DeleteFolder(const std::filesystem::path& path) {
|
|
||||||
return nftw(path.c_str(), removeCallback, 64, FTW_DEPTH | FTW_PHYS) == 0
|
|
||||||
? true
|
|
||||||
: false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint64_t convertUnixtimeToWinFiletime(time_t unixtime) {
|
static uint64_t convertUnixtimeToWinFiletime(time_t unixtime) {
|
||||||
// Linux uses number of seconds since 1/1/1970, and Windows uses
|
// Linux uses number of seconds since 1/1/1970, and Windows uses
|
||||||
// number of nanoseconds since 1/1/1601
|
// number of nanoseconds since 1/1/1601
|
||||||
|
|
|
@ -61,15 +61,6 @@ std::filesystem::path GetUserFolder() {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DeleteFolder(const std::filesystem::path& path) {
|
|
||||||
auto double_null_path = path.wstring() + std::wstring(L"\0", 1);
|
|
||||||
SHFILEOPSTRUCT op = {0};
|
|
||||||
op.wFunc = FO_DELETE;
|
|
||||||
op.pFrom = double_null_path.c_str();
|
|
||||||
op.fFlags = FOF_NO_UI;
|
|
||||||
return SHFileOperation(&op) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CreateFile(const std::filesystem::path& path) {
|
bool CreateFile(const std::filesystem::path& path) {
|
||||||
auto handle = CreateFileW(path.c_str(), 0, 0, nullptr, CREATE_ALWAYS,
|
auto handle = CreateFileW(path.c_str(), 0, 0, nullptr, CREATE_ALWAYS,
|
||||||
FILE_ATTRIBUTE_NORMAL, nullptr);
|
FILE_ATTRIBUTE_NORMAL, nullptr);
|
||||||
|
|
|
@ -243,8 +243,7 @@ X_RESULT ContentManager::DeleteContent(const XCONTENT_DATA& data) {
|
||||||
auto global_lock = global_critical_region_.Acquire();
|
auto global_lock = global_critical_region_.Acquire();
|
||||||
|
|
||||||
auto package_path = ResolvePackagePath(data);
|
auto package_path = ResolvePackagePath(data);
|
||||||
if (std::filesystem::exists(package_path)) {
|
if (std::filesystem::remove_all(package_path) > 0) {
|
||||||
xe::filesystem::DeleteFolder(package_path);
|
|
||||||
return X_ERROR_SUCCESS;
|
return X_ERROR_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
return X_ERROR_FILE_NOT_FOUND;
|
return X_ERROR_FILE_NOT_FOUND;
|
||||||
|
|
|
@ -99,7 +99,7 @@ bool HostPathEntry::DeleteEntryInternal(Entry* entry) {
|
||||||
auto full_path = host_path_ / xe::to_path(entry->name());
|
auto full_path = host_path_ / xe::to_path(entry->name());
|
||||||
if (entry->attributes() & kFileAttributeDirectory) {
|
if (entry->attributes() & kFileAttributeDirectory) {
|
||||||
// Delete entire directory and contents.
|
// Delete entire directory and contents.
|
||||||
return xe::filesystem::DeleteFolder(full_path);
|
return std::filesystem::remove_all(full_path);
|
||||||
} else {
|
} else {
|
||||||
// Delete file.
|
// Delete file.
|
||||||
return xe::filesystem::DeleteFile(full_path);
|
return xe::filesystem::DeleteFile(full_path);
|
||||||
|
|
Loading…
Reference in New Issue