From bb9db9d4302a6ed3cbfdf5c1288813dc4a41edb6 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 7 Jan 2020 14:15:54 +0100 Subject: [PATCH] TmpFS: Add "." and ".." entries to all directories It was so weird not seeing them in "ls -la" output :^) --- Kernel/FileSystem/TmpFS.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Kernel/FileSystem/TmpFS.cpp b/Kernel/FileSystem/TmpFS.cpp index b60ff4b5ec..66fb025ed5 100644 --- a/Kernel/FileSystem/TmpFS.cpp +++ b/Kernel/FileSystem/TmpFS.cpp @@ -96,7 +96,10 @@ RefPtr TmpFS::create_directory(InodeIdentifier parent_id, const String& n // Ensure it's a directory. mode &= ~0170000; mode |= 0040000; - return create_inode(parent_id, name, mode, 0, 0, uid, gid, error); + auto new_directory = create_inode(parent_id, name, mode, 0, 0, uid, gid, error); + new_directory->add_child(new_directory->identifier(), ".", 0); + new_directory->add_child(parent_id, "..", 0); + return new_directory; } TmpFSInode::TmpFSInode(TmpFS& fs, InodeMetadata metadata, InodeIdentifier parent) @@ -122,7 +125,10 @@ NonnullRefPtr TmpFSInode::create_root(TmpFS& fs) { InodeMetadata metadata; metadata.mode = 0041777; - return create(fs, metadata, { fs.fsid(), 1 }); + auto root_inode = create(fs, metadata, { fs.fsid(), 1 }); + root_inode->add_child(root_inode->identifier(), ".", 0); + root_inode->add_child(root_inode->identifier(), "..", 0); + return root_inode; } InodeMetadata TmpFSInode::metadata() const @@ -211,8 +217,7 @@ size_t TmpFSInode::directory_entry_count() const { LOCKER(m_lock); ASSERT(is_directory()); - - return 2 + m_children.size(); + return m_children.size(); } void TmpFSInode::flush_metadata()