aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/include/kernel/filesystem/mount_table.hpp2
-rw-r--r--kernel/src/filesystem/mount_table.cpp17
2 files changed, 11 insertions, 8 deletions
diff --git a/kernel/include/kernel/filesystem/mount_table.hpp b/kernel/include/kernel/filesystem/mount_table.hpp
index 8bebfe2..742c928 100644
--- a/kernel/include/kernel/filesystem/mount_table.hpp
+++ b/kernel/include/kernel/filesystem/mount_table.hpp
@@ -47,6 +47,8 @@ namespace kernel::filesystem
private:
[[nodiscard]] auto has_child_mounts(kstd::shared_ptr<mount> const & parent_mount) const -> bool;
+ [[nodiscard]] auto find_mount_iterator(std::string_view path) const
+ -> kstd::vector<kstd::shared_ptr<mount>>::const_iterator;
kstd::vector<kstd::shared_ptr<mount>> m_mounts;
};
diff --git a/kernel/src/filesystem/mount_table.cpp b/kernel/src/filesystem/mount_table.cpp
index 78ac727..b582fd9 100644
--- a/kernel/src/filesystem/mount_table.cpp
+++ b/kernel/src/filesystem/mount_table.cpp
@@ -31,11 +31,7 @@ namespace kernel::filesystem
auto mount_table::remove_mount(std::string_view path) -> operation_result
{
// TODO BA-FS26 check wheter something is open in this mount
- // TODO BA-FS26 nearly the same code is in find_mount -> refactor to avoid code duplication
- auto mount_range =
- std::ranges::find_last_if(m_mounts, [&](auto const & mount) { return mount->get_mount_path() == path; });
- auto mount_it = mount_range.begin();
-
+ auto mount_it = find_mount_iterator(path);
if (mount_it == m_mounts.end())
{
return operation_result::mount_not_found;
@@ -54,9 +50,14 @@ namespace kernel::filesystem
auto mount_table::find_mount(std::string_view path) const -> kstd::shared_ptr<mount>
{
- auto mount_range =
- std::ranges::find_last_if(m_mounts, [&](auto const & mount) { return mount->get_mount_path() == path; });
- auto mount_it = mount_range.begin();
+ auto mount_it = find_mount_iterator(path);
return (mount_it != m_mounts.end()) ? *mount_it : nullptr;
}
+
+ auto mount_table::find_mount_iterator(std::string_view path) const
+ -> kstd::vector<kstd::shared_ptr<mount>>::const_iterator
+ {
+ return std::ranges::find_last_if(m_mounts, [&](auto const & mount) { return mount->get_mount_path() == path; })
+ .begin();
+ }
} // namespace kernel::filesystem \ No newline at end of file