FS: Implement DiskFileSystem's OpenDirectory interface.
This commit is contained in:
parent
e1d7b9fc2c
commit
6d90d99d12
|
@ -108,8 +108,17 @@ ResultCode Disk_FileSystem::RenameDirectory(const Path& src_path, const Path& de
|
||||||
}
|
}
|
||||||
|
|
||||||
ResultVal<std::unique_ptr<DirectoryBackend>> Disk_FileSystem::OpenDirectory(
|
ResultVal<std::unique_ptr<DirectoryBackend>> Disk_FileSystem::OpenDirectory(
|
||||||
const Path& path) const {
|
const std::string& path) const {
|
||||||
return MakeResult<std::unique_ptr<DirectoryBackend>>(std::make_unique<Disk_Directory>());
|
|
||||||
|
std::string full_path = base_directory + path;
|
||||||
|
|
||||||
|
if (!FileUtil::IsDirectory(full_path)) {
|
||||||
|
// TODO(Subv): Find the correct error code for this.
|
||||||
|
return ResultCode(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto directory = std::make_unique<Disk_Directory>(full_path);
|
||||||
|
return MakeResult<std::unique_ptr<DirectoryBackend>>(std::move(directory));
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 Disk_FileSystem::GetFreeSpaceSize() const {
|
u64 Disk_FileSystem::GetFreeSpaceSize() const {
|
||||||
|
|
|
@ -32,7 +32,8 @@ public:
|
||||||
ResultCode CreateFile(const std::string& path, u64 size) const override;
|
ResultCode CreateFile(const std::string& path, u64 size) const override;
|
||||||
ResultCode CreateDirectory(const Path& path) const override;
|
ResultCode CreateDirectory(const Path& path) const override;
|
||||||
ResultCode RenameDirectory(const Path& src_path, const Path& dest_path) const override;
|
ResultCode RenameDirectory(const Path& src_path, const Path& dest_path) const override;
|
||||||
ResultVal<std::unique_ptr<DirectoryBackend>> OpenDirectory(const Path& path) const override;
|
ResultVal<std::unique_ptr<DirectoryBackend>> OpenDirectory(
|
||||||
|
const std::string& path) const override;
|
||||||
u64 GetFreeSpaceSize() const override;
|
u64 GetFreeSpaceSize() const override;
|
||||||
ResultVal<EntryType> GetEntryType(const std::string& path) const override;
|
ResultVal<EntryType> GetEntryType(const std::string& path) const override;
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,8 @@ public:
|
||||||
* @param path Path relative to the archive
|
* @param path Path relative to the archive
|
||||||
* @return Opened directory, or error code
|
* @return Opened directory, or error code
|
||||||
*/
|
*/
|
||||||
virtual ResultVal<std::unique_ptr<DirectoryBackend>> OpenDirectory(const Path& path) const = 0;
|
virtual ResultVal<std::unique_ptr<DirectoryBackend>> OpenDirectory(
|
||||||
|
const std::string& path) const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the free space
|
* Get the free space
|
||||||
|
|
|
@ -70,7 +70,8 @@ ResultCode RomFS_FileSystem::RenameDirectory(const Path& src_path, const Path& d
|
||||||
}
|
}
|
||||||
|
|
||||||
ResultVal<std::unique_ptr<DirectoryBackend>> RomFS_FileSystem::OpenDirectory(
|
ResultVal<std::unique_ptr<DirectoryBackend>> RomFS_FileSystem::OpenDirectory(
|
||||||
const Path& path) const {
|
const std::string& path) const {
|
||||||
|
LOG_WARNING(Service_FS, "Opening Directory in a ROMFS archive");
|
||||||
return MakeResult<std::unique_ptr<DirectoryBackend>>(std::make_unique<ROMFSDirectory>());
|
return MakeResult<std::unique_ptr<DirectoryBackend>>(std::make_unique<ROMFSDirectory>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,8 @@ public:
|
||||||
ResultCode CreateFile(const std::string& path, u64 size) const override;
|
ResultCode CreateFile(const std::string& path, u64 size) const override;
|
||||||
ResultCode CreateDirectory(const Path& path) const override;
|
ResultCode CreateDirectory(const Path& path) const override;
|
||||||
ResultCode RenameDirectory(const Path& src_path, const Path& dest_path) const override;
|
ResultCode RenameDirectory(const Path& src_path, const Path& dest_path) const override;
|
||||||
ResultVal<std::unique_ptr<DirectoryBackend>> OpenDirectory(const Path& path) const override;
|
ResultVal<std::unique_ptr<DirectoryBackend>> OpenDirectory(
|
||||||
|
const std::string& path) const override;
|
||||||
u64 GetFreeSpaceSize() const override;
|
u64 GetFreeSpaceSize() const override;
|
||||||
ResultVal<EntryType> GetEntryType(const std::string& path) const override;
|
ResultVal<EntryType> GetEntryType(const std::string& path) const override;
|
||||||
|
|
||||||
|
|
Reference in New Issue