From aa714afa18cc1000431101401d063378cef253f1 Mon Sep 17 00:00:00 2001 From: Alexis211 Date: Sun, 27 Dec 2009 12:04:09 +0100 Subject: Bugfixes with mountpoints --- Source/Kernel/VFS/DirectoryNode.class.cpp | 7 ++++++- Source/Kernel/VFS/DirectoryNode.class.h | 1 + Source/Kernel/VFS/FSNode.proto.h | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) (limited to 'Source') diff --git a/Source/Kernel/VFS/DirectoryNode.class.cpp b/Source/Kernel/VFS/DirectoryNode.class.cpp index 55365f0..18bc41a 100644 --- a/Source/Kernel/VFS/DirectoryNode.class.cpp +++ b/Source/Kernel/VFS/DirectoryNode.class.cpp @@ -30,6 +30,11 @@ u32int DirectoryNode::getNameChildSC(u32int name) { return (u32int) - 1; } +const String& DirectoryNode::getName() { + if (m_name == "/" && m_parent != NULL) return m_parent->getName(); + return m_name; +} + u64int DirectoryNode::getLength() { if (m_mounts != 0) return m_mounts->getLength(); if (!m_contentLoaded) @@ -39,7 +44,7 @@ u64int DirectoryNode::getLength() { } FSNode* DirectoryNode::getParent() { - //if (m_name == "/" and m_parent != 0) return m_parent->getParent(); + if (m_name == "/" and m_parent != 0) return m_parent->getParent(); return m_parent; } diff --git a/Source/Kernel/VFS/DirectoryNode.class.h b/Source/Kernel/VFS/DirectoryNode.class.h index 1fc4c52..ded9af8 100644 --- a/Source/Kernel/VFS/DirectoryNode.class.h +++ b/Source/Kernel/VFS/DirectoryNode.class.h @@ -27,6 +27,7 @@ class DirectoryNode : public FSNode { Vector &getChildren() { return m_children; } //MUST BE USED ONLY BY FILESYSTEMS u8int type() { return NT_DIRECTORY; } + const String& getName(); u64int getLength(); FSNode* getParent(); bool removable(); diff --git a/Source/Kernel/VFS/FSNode.proto.h b/Source/Kernel/VFS/FSNode.proto.h index a46c79d..3e5c5a7 100644 --- a/Source/Kernel/VFS/FSNode.proto.h +++ b/Source/Kernel/VFS/FSNode.proto.h @@ -43,7 +43,7 @@ class FSNode : public Ressource { virtual bool removable() = 0; //True for files, false for non-empty directories, true otherwise virtual bool used() { return false; } //True if file is read/written from/to - const String& getName() { return m_name; } + virtual const String& getName() { return m_name; } virtual u64int getLength() { return m_length; } u32int getPermissions() { return m_permissions; } u32int getUid() { return m_uid; } -- cgit v1.2.3