mirror of
https://github.com/Takiiiiiiii/strato.git
synced 2025-07-17 08:46:39 +00:00
Implement recursive delete IFileSystem
service calls
Co-Authored-By: AbandonedCart <twistedumbrella@gmail.com>
This commit is contained in:
@ -69,6 +69,12 @@ namespace skyline::service::fssrv {
|
|||||||
return {};
|
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) {
|
Result IFileSystem::OpenDirectory(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
std::string path(request.inputBuf.at(0).as_string(true));
|
std::string path(request.inputBuf.at(0).as_string(true));
|
||||||
|
|
||||||
@ -94,6 +100,18 @@ namespace skyline::service::fssrv {
|
|||||||
return {};
|
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) {
|
Result IFileSystem::GetFileTimeStampRaw(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response) {
|
||||||
struct FileTimeStampRaw {
|
struct FileTimeStampRaw {
|
||||||
u64 created{};
|
u64 created{};
|
||||||
|
@ -38,6 +38,11 @@ namespace skyline::service::fssrv {
|
|||||||
*/
|
*/
|
||||||
Result DeleteDirectory(type::KSession &session, ipc::IpcRequest &request, ipc::IpcResponse &response);
|
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
|
* @brief Queries the DirectoryEntryType of the given path
|
||||||
* @url https://switchbrew.org/wiki/Filesystem_services#GetEntryType
|
* @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);
|
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
|
* @url https://switchbrew.org/wiki/Filesystem_services#GetFileTimeStampRaw
|
||||||
*/
|
*/
|
||||||
@ -77,11 +94,14 @@ namespace skyline::service::fssrv {
|
|||||||
SFUNC(0x1, IFileSystem, DeleteFile),
|
SFUNC(0x1, IFileSystem, DeleteFile),
|
||||||
SFUNC(0x2, IFileSystem, CreateDirectory),
|
SFUNC(0x2, IFileSystem, CreateDirectory),
|
||||||
SFUNC(0x3, IFileSystem, DeleteDirectory),
|
SFUNC(0x3, IFileSystem, DeleteDirectory),
|
||||||
|
SFUNC(0x4, IFileSystem, DeleteDirectoryRecursively),
|
||||||
SFUNC(0x7, IFileSystem, GetEntryType),
|
SFUNC(0x7, IFileSystem, GetEntryType),
|
||||||
SFUNC(0x8, IFileSystem, OpenFile),
|
SFUNC(0x8, IFileSystem, OpenFile),
|
||||||
SFUNC(0x9, IFileSystem, OpenDirectory),
|
SFUNC(0x9, IFileSystem, OpenDirectory),
|
||||||
SFUNC(0xA, IFileSystem, Commit),
|
SFUNC(0xA, IFileSystem, Commit),
|
||||||
SFUNC(0xB, IFileSystem, GetFreeSpaceSize),
|
SFUNC(0xB, IFileSystem, GetFreeSpaceSize),
|
||||||
|
SFUNC(0xC, IFileSystem, GetTotalSpaceSize),
|
||||||
|
SFUNC(0xD, IFileSystem, CleanDirectoryRecursively)
|
||||||
SFUNC(0xE, IFileSystem, GetFileTimeStampRaw)
|
SFUNC(0xE, IFileSystem, GetFileTimeStampRaw)
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user