diff options
author | Alexis211 <alexis211@gmail.com> | 2009-12-27 12:04:09 +0100 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2009-12-27 12:04:09 +0100 |
commit | aa714afa18cc1000431101401d063378cef253f1 (patch) | |
tree | c371a7a61a3afdc6ae2085c4d7e36efb8600c2a3 /Source/Kernel/VFS | |
parent | e25dbc23d43258ad8f822bd3c5d202b51c492184 (diff) | |
download | Melon-aa714afa18cc1000431101401d063378cef253f1.tar.gz Melon-aa714afa18cc1000431101401d063378cef253f1.zip |
Bugfixes with mountpoints
Diffstat (limited to 'Source/Kernel/VFS')
-rw-r--r-- | Source/Kernel/VFS/DirectoryNode.class.cpp | 7 | ||||
-rw-r--r-- | Source/Kernel/VFS/DirectoryNode.class.h | 1 | ||||
-rw-r--r-- | Source/Kernel/VFS/FSNode.proto.h | 2 |
3 files changed, 8 insertions, 2 deletions
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<FSNode*> &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; } |