aboutsummaryrefslogtreecommitdiff
path: root/kernel/src
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-04-28 10:55:37 +0200
committerLukas Oesch <lukasoesch20@gmail.com>2026-05-05 14:38:51 +0200
commit6790ab170578594f26e8e84a3e57b80cb6094e21 (patch)
tree49f866ed5f621b108e80d73f6406f2c60037a72c /kernel/src
parentb3209ac2564f21f3b78ecf5e0c05ca346a4a4276 (diff)
downloadkernel-6790ab170578594f26e8e84a3e57b80cb6094e21.tar.xz
kernel-6790ab170578594f26e8e84a3e57b80cb6094e21.zip
add is_symbolic_link method in ext2 inode
Diffstat (limited to 'kernel/src')
-rw-r--r--kernel/src/filesystem/ext2/inode.cpp5
-rw-r--r--kernel/src/filesystem/ext2/inode.tests.cpp24
-rw-r--r--kernel/src/filesystem/inode.cpp5
3 files changed, 34 insertions, 0 deletions
diff --git a/kernel/src/filesystem/ext2/inode.cpp b/kernel/src/filesystem/ext2/inode.cpp
index 279c84f..5b6bcb3 100644
--- a/kernel/src/filesystem/ext2/inode.cpp
+++ b/kernel/src/filesystem/ext2/inode.cpp
@@ -72,4 +72,9 @@ namespace kernel::filesystem::ext2
{
return (m_data.mode & constants::mode_mask) == constants::mode_directory;
}
+
+ auto inode::is_symbolic_link() const -> bool
+ {
+ return (m_data.mode & constants::mode_mask) == constants::mode_symbolic_link;
+ }
} // namespace kernel::filesystem::ext2
diff --git a/kernel/src/filesystem/ext2/inode.tests.cpp b/kernel/src/filesystem/ext2/inode.tests.cpp
index e68352f..f0f4aaf 100644
--- a/kernel/src/filesystem/ext2/inode.tests.cpp
+++ b/kernel/src/filesystem/ext2/inode.tests.cpp
@@ -33,6 +33,7 @@ SCENARIO("Ext2 inode initialization and properties", "[filesystem][ext2][inode]"
REQUIRE(inode.is_regular());
REQUIRE(!inode.is_directory());
REQUIRE(!inode.is_device());
+ REQUIRE(!inode.is_symbolic_link());
}
THEN("the inode is initialized with directory mode in data and has the kind directory")
@@ -43,6 +44,29 @@ SCENARIO("Ext2 inode initialization and properties", "[filesystem][ext2][inode]"
REQUIRE(!inode.is_regular());
REQUIRE(inode.is_directory());
REQUIRE(!inode.is_device());
+ REQUIRE(!inode.is_symbolic_link());
+ }
+
+ THEN("the inode is initialized with symbolic link mode in data and has the kind symbolic link")
+ {
+ data.mode = kernel::filesystem::ext2::constants::mode_symbolic_link;
+ auto inode = kernel::filesystem::ext2::inode(&fs, data);
+
+ REQUIRE(!inode.is_regular());
+ REQUIRE(!inode.is_directory());
+ REQUIRE(!inode.is_device());
+ REQUIRE(inode.is_symbolic_link());
+ }
+
+ THEN("the inode is initialized with zero mode in data and has no specific kind")
+ {
+ data.mode = 0;
+ auto inode = kernel::filesystem::ext2::inode(&fs, data);
+
+ REQUIRE(!inode.is_regular());
+ REQUIRE(!inode.is_directory());
+ REQUIRE(!inode.is_device());
+ REQUIRE(!inode.is_symbolic_link());
}
}
diff --git a/kernel/src/filesystem/inode.cpp b/kernel/src/filesystem/inode.cpp
index f2a7741..c188917 100644
--- a/kernel/src/filesystem/inode.cpp
+++ b/kernel/src/filesystem/inode.cpp
@@ -16,4 +16,9 @@ namespace kernel::filesystem
{
return false;
}
+
+ auto inode::is_symbolic_link() const -> bool
+ {
+ return false;
+ }
} // namespace kernel::filesystem \ No newline at end of file