0
0
mirror of https://github.com/Ishan09811/pine.git synced 2025-04-24 08:55:10 +00:00

Implement recursive delete IFileSystem service calls

Co-Authored-By: AbandonedCart <twistedumbrella@gmail.com>
This commit is contained in:
lynxnb 2023-06-08 14:59:51 +02:00 committed by Niccolò Betto
parent 920a3b96d2
commit d95bb121f3
2 changed files with 38 additions and 0 deletions

View File

@ -69,6 +69,12 @@ namespace skyline::service::fssrv {
return {};
}
Result IFileSystem::DeleteDirectoryRecursively(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
std::string path{request.inputBuf.at(0).as_string(true)};
std::filesystem::remove_all(path);
return {};
}
Result IFileSystem::OpenDirectory(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
std::string path(request.inputBuf.at(0).as_string(true));
@ -94,6 +100,18 @@ namespace skyline::service::fssrv {
return {};
}
Result IFileSystem::GetTotalSpaceSize(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
response.Push<u64>(90000000);
return {};
}
Result IFileSystem::CleanDirectoryRecursively(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
std::string path{request.inputBuf.at(0).as_string(true)};
std::filesystem::remove_all(path);
backing->CreateDirectory(path, true);
return {};
}
Result IFileSystem::GetFileTimeStampRaw(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
struct FileTimeStampRaw {
u64 created{};

View File

@ -38,6 +38,11 @@ namespace skyline::service::fssrv {
*/
Result DeleteDirectory(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
/**
* @brief Recursively delete a directory at the specified path in the filesystem
*/
Result DeleteDirectoryRecursively(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
/**
* @brief Queries the DirectoryEntryType of the given path
* @url https://switchbrew.org/wiki/Filesystem_services#GetEntryType
@ -67,6 +72,18 @@ namespace skyline::service::fssrv {
*/
Result GetFreeSpaceSize(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
/**
* @brief Returns the total space (free + used) of the filesystem
* @url https://switchbrew.org/wiki/Filesystem_services#GetTotalSpaceSize
*/
Result GetTotalSpaceSize(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
/**
* @brief Recursively delete the contents of a directory at the specified path
* @url https://switchbrew.org/wiki/Filesystem_services#CleanDirectoryRecursively
*/
Result CleanDirectoryRecursively(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
/**
* @url https://switchbrew.org/wiki/Filesystem_services#GetFileTimeStampRaw
*/
@ -77,11 +94,14 @@ namespace skyline::service::fssrv {
SFUNC(0x1, IFileSystem, DeleteFile),
SFUNC(0x2, IFileSystem, CreateDirectory),
SFUNC(0x3, IFileSystem, DeleteDirectory),
SFUNC(0x4, IFileSystem, DeleteDirectoryRecursively),
SFUNC(0x7, IFileSystem, GetEntryType),
SFUNC(0x8, IFileSystem, OpenFile),
SFUNC(0x9, IFileSystem, OpenDirectory),
SFUNC(0xA, IFileSystem, Commit),
SFUNC(0xB, IFileSystem, GetFreeSpaceSize),
SFUNC(0xC, IFileSystem, GetTotalSpaceSize),
SFUNC(0xD, IFileSystem, CleanDirectoryRecursively)
SFUNC(0xE, IFileSystem, GetFileTimeStampRaw)
)
};