diff options
Diffstat (limited to 'src/core/file_sys')
-rw-r--r-- | src/core/file_sys/archive_backend.h | 7 | ||||
-rw-r--r-- | src/core/file_sys/disk_archive.cpp | 4 | ||||
-rw-r--r-- | src/core/file_sys/disk_archive.h | 1 | ||||
-rw-r--r-- | src/core/file_sys/ivfc_archive.cpp | 6 | ||||
-rw-r--r-- | src/core/file_sys/ivfc_archive.h | 1 |
5 files changed, 19 insertions, 0 deletions
diff --git a/src/core/file_sys/archive_backend.h b/src/core/file_sys/archive_backend.h index d69c3c785..06b8f2ed7 100644 --- a/src/core/file_sys/archive_backend.h +++ b/src/core/file_sys/archive_backend.h @@ -112,6 +112,13 @@ public: virtual bool DeleteDirectory(const Path& path) const = 0; /** + * Delete a directory specified by its path and anything under it + * @param path Path relative to the archive + * @return Whether the directory could be deleted + */ + virtual bool DeleteDirectoryRecursively(const Path& path) const = 0; + + /** * Create a file specified by its path * @param path Path relative to the Archive * @param size The size of the new file, filled with zeroes diff --git a/src/core/file_sys/disk_archive.cpp b/src/core/file_sys/disk_archive.cpp index 0f66998e1..2f05af361 100644 --- a/src/core/file_sys/disk_archive.cpp +++ b/src/core/file_sys/disk_archive.cpp @@ -51,6 +51,10 @@ bool DiskArchive::DeleteDirectory(const Path& path) const { return FileUtil::DeleteDir(mount_point + path.AsString()); } +bool DiskArchive::DeleteDirectoryRecursively(const Path& path) const { + return FileUtil::DeleteDirRecursively(mount_point + path.AsString()); +} + ResultCode DiskArchive::CreateFile(const FileSys::Path& path, u64 size) const { std::string full_path = mount_point + path.AsString(); diff --git a/src/core/file_sys/disk_archive.h b/src/core/file_sys/disk_archive.h index 2165f27f9..59ebb2002 100644 --- a/src/core/file_sys/disk_archive.h +++ b/src/core/file_sys/disk_archive.h @@ -38,6 +38,7 @@ public: ResultCode DeleteFile(const Path& path) const override; bool RenameFile(const Path& src_path, const Path& dest_path) const override; bool DeleteDirectory(const Path& path) const override; + bool DeleteDirectoryRecursively(const Path& path) const override; ResultCode CreateFile(const Path& path, u64 size) const override; bool CreateDirectory(const Path& path) const override; bool RenameDirectory(const Path& src_path, const Path& dest_path) const override; diff --git a/src/core/file_sys/ivfc_archive.cpp b/src/core/file_sys/ivfc_archive.cpp index 49cc1de10..af59d296d 100644 --- a/src/core/file_sys/ivfc_archive.cpp +++ b/src/core/file_sys/ivfc_archive.cpp @@ -43,6 +43,12 @@ bool IVFCArchive::DeleteDirectory(const Path& path) const { return false; } +bool IVFCArchive::DeleteDirectoryRecursively(const Path& path) const { + LOG_CRITICAL(Service_FS, "Attempted to delete a directory from an IVFC archive (%s).", + GetName().c_str()); + return false; +} + ResultCode IVFCArchive::CreateFile(const Path& path, u64 size) const { LOG_CRITICAL(Service_FS, "Attempted to create a file in an IVFC archive (%s).", GetName().c_str()); diff --git a/src/core/file_sys/ivfc_archive.h b/src/core/file_sys/ivfc_archive.h index 0df6cf83a..2fbb3a568 100644 --- a/src/core/file_sys/ivfc_archive.h +++ b/src/core/file_sys/ivfc_archive.h @@ -37,6 +37,7 @@ public: ResultCode DeleteFile(const Path& path) const override; bool RenameFile(const Path& src_path, const Path& dest_path) const override; bool DeleteDirectory(const Path& path) const override; + bool DeleteDirectoryRecursively(const Path& path) const override; ResultCode CreateFile(const Path& path, u64 size) const override; bool CreateDirectory(const Path& path) const override; bool RenameDirectory(const Path& src_path, const Path& dest_path) const override; |