diff options
| author | Marcel Braun <marcel.braun@ost.ch> | 2026-05-11 18:46:10 +0200 |
|---|---|---|
| committer | Marcel Braun <marcel.braun@ost.ch> | 2026-05-11 18:46:10 +0200 |
| commit | 7ea0aa798e3062dea20a317e2b19d7cf879611ca (patch) | |
| tree | 6da63f9d67d6995a80264326becfd6f95d257624 /kernel/src/filesystem/dentry.cpp | |
| parent | 8a11512eb8030de09ed806d8b40b7f54c2f204ab (diff) | |
| download | kernel-7ea0aa798e3062dea20a317e2b19d7cf879611ca.tar.xz kernel-7ea0aa798e3062dea20a317e2b19d7cf879611ca.zip | |
Refactor dentry
Diffstat (limited to 'kernel/src/filesystem/dentry.cpp')
| -rw-r--r-- | kernel/src/filesystem/dentry.cpp | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/kernel/src/filesystem/dentry.cpp b/kernel/src/filesystem/dentry.cpp index a3bd7f4..7617b28 100644 --- a/kernel/src/filesystem/dentry.cpp +++ b/kernel/src/filesystem/dentry.cpp @@ -23,6 +23,10 @@ namespace kernel::filesystem { kapi::system::panic("[FILESYSTEM] dentry constructed with null inode."); } + if (m_name.empty()) + { + kapi::system::panic("[FILESYSTEM] dentry constructed with empty name."); + } } auto dentry::get_inode() const -> kstd::shared_ptr<inode> const & @@ -42,33 +46,25 @@ namespace kernel::filesystem auto dentry::get_full_path() const -> kstd::string { - if (m_name == "/") - { - return "/"; - } - - kstd::vector<std::string_view> components; - components.push_back(m_name.view()); - components.push_back("/"); + kstd::string path = m_name; auto parent = m_parent; - - while (parent && parent->m_name != "/") - { - components.push_back(parent->m_name.view()); - components.push_back("/"); - parent = parent->get_parent(); - } - - std::ranges::reverse(components); - - kstd::string full_path = ""; - for (auto const & view : components) + while (parent) { - full_path += view; + auto parent_name = parent->m_name; + if (parent_name == "/") + { + path = "/" + path; + } + else + { + path = parent_name + "/" + path; + } + + parent = parent->m_parent; } - return full_path; + return path; } auto dentry::add_child(kstd::shared_ptr<dentry> const & child) -> void |
