From 7b3c0a69f31ec0bd326fd73c63ab80f5270b80d6 Mon Sep 17 00:00:00 2001 From: Eladash Date: Tue, 15 Sep 2020 17:37:37 +0300 Subject: [PATCH] kernel-explorer: Implement Filesystem Destcriptors information --- rpcs3/Emu/Cell/lv2/sys_fs.h | 20 ++++++++++++++++++++ rpcs3/rpcs3qt/kernel_explorer.cpp | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.h b/rpcs3/Emu/Cell/lv2/sys_fs.h index b2df9197a1..1d389d00ae 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.h +++ b/rpcs3/Emu/Cell/lv2/sys_fs.h @@ -190,6 +190,8 @@ struct lv2_fs_object name[filename.size()] = 0; return name; } + + virtual std::string to_string() const { return {}; } }; struct lv2_file final : lv2_fs_object @@ -271,6 +273,19 @@ struct lv2_file final : lv2_fs_object // Make file view from lv2_file object (for MSELF support) static fs::file make_view(const std::shared_ptr& _file, u64 offset); + + virtual std::string to_string() const override + { + std::string_view type_s; + switch (type) + { + case lv2_file_type::regular: type_s = "Regular file"; break; + case lv2_file_type::sdata: type_s = "SDATA"; break; + case lv2_file_type::edata: type_s = "EDATA"; break; + } + + return fmt::format(u8"%s, “%s”, Mode: 0x%x, Flags: 0x%x", type_s, name.data(), mode, flags); + } }; struct lv2_dir final : lv2_fs_object @@ -296,6 +311,11 @@ struct lv2_dir final : lv2_fs_object return nullptr; } + + virtual std::string to_string() const override + { + return fmt::format(u8"Directory, “%s”, Entries: %u/%u", name.data(), std::min(pos, entries.size()), entries.size()); + } }; // sys_fs_fcntl arg base class (left empty for PODness) diff --git a/rpcs3/rpcs3qt/kernel_explorer.cpp b/rpcs3/rpcs3qt/kernel_explorer.cpp index f3007d8c3f..8a7a37a2ac 100644 --- a/rpcs3/rpcs3qt/kernel_explorer.cpp +++ b/rpcs3/rpcs3qt/kernel_explorer.cpp @@ -592,7 +592,7 @@ void kernel_explorer::Update() idm::select([&](u32 id, lv2_fs_object& fo) { - add_leaf(find_node(m_tree, additional_nodes::file_descriptors), qstr(fmt::format(u8"FD %u: “%s”", id, fo.name.data()))); + add_leaf(find_node(m_tree, additional_nodes::file_descriptors), qstr(fmt::format("FD %u: %s", id, fo.to_string()))); }); // RawSPU Threads (TODO)