diff options
| author | marcel.braun <marcel.braun@ost.ch> | 2026-03-23 21:41:37 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-26 21:18:55 +0100 |
| commit | fbb4eefce7bf825b0406f6fa63de318153a3b95a (patch) | |
| tree | 6be6701f47ecfd1b63dde39f3f8da2b8d953d45e /kernel/src/filesystem/dentry.cpp | |
| parent | 336b25458b75e28c93c0bab23ccd359042f9df41 (diff) | |
| download | teachos-fbb4eefce7bf825b0406f6fa63de318153a3b95a.tar.xz teachos-fbb4eefce7bf825b0406f6fa63de318153a3b95a.zip | |
Implement resolve_path
Diffstat (limited to 'kernel/src/filesystem/dentry.cpp')
| -rw-r--r-- | kernel/src/filesystem/dentry.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/kernel/src/filesystem/dentry.cpp b/kernel/src/filesystem/dentry.cpp index e498b52..76949f2 100644 --- a/kernel/src/filesystem/dentry.cpp +++ b/kernel/src/filesystem/dentry.cpp @@ -6,12 +6,15 @@ #include <kstd/memory> +#include <algorithm> #include <cstdint> +#include <string_view> namespace filesystem { - dentry::dentry(kstd::shared_ptr<dentry> const & parent, kstd::shared_ptr<inode> const & node) - : m_parent(parent) + dentry::dentry(kstd::shared_ptr<dentry> const & parent, kstd::shared_ptr<inode> const & node, std::string_view name) + : m_name(name) + , m_parent(parent) , m_inode(node) { if (!m_inode) @@ -30,6 +33,17 @@ namespace filesystem return m_parent; } + auto dentry::add_child(kstd::shared_ptr<dentry> const & child) -> void + { + m_children.push_back(child); + } + + auto dentry::find_child(std::string_view name) const -> kstd::shared_ptr<dentry> + { + auto it = std::ranges::find_if(m_children, [&](auto const & child) { return child->m_name == name; }); + return (it != m_children.end()) ? *it : nullptr; + } + auto dentry::set_flag(dentry_flags flag) -> void { m_flags |= static_cast<uint32_t>(flag); |
