summaryrefslogtreecommitdiff
path: root/Source/Kernel/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Kernel/Core')
-rw-r--r--Source/Kernel/Core/kmain.wtf.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/Source/Kernel/Core/kmain.wtf.cpp b/Source/Kernel/Core/kmain.wtf.cpp
index 808e254..59d74b5 100644
--- a/Source/Kernel/Core/kmain.wtf.cpp
+++ b/Source/Kernel/Core/kmain.wtf.cpp
@@ -164,14 +164,19 @@ void kmain(multiboot_info_t* mbd, u32int magic) {
}
}
} else if (tokens[0] == "cd") {
- FSNode* n = VFS::find(tokens[1], cwd);
- if (n == NULL)
- *kvt << "No such directory : " << tokens[1] << "\n";
- else if (n->type() != NT_DIRECTORY)
- *kvt << "Not a directory : " << tokens[1] << "\n";
- else
- cwd = (DirectoryNode*)n;
+ if (tokens.size() == 1) {
+ *kvt << "Where shall I take you, sir ?\n";
+ } else {
+ FSNode* n = VFS::find(tokens[1], cwd);
+ if (n == NULL)
+ *kvt << "No such directory : " << tokens[1] << "\n";
+ else if (n->type() != NT_DIRECTORY)
+ *kvt << "Not a directory : " << tokens[1] << "\n";
+ else
+ cwd = (DirectoryNode*)n;
+ }
} else if (tokens[0] == "cat") {
+ if (tokens.size() == 1) *kvt << "Meow.\n";
for (u32int i = 1; i < tokens.size(); i++) {
FSNode* n = VFS::find(tokens[i], cwd);
if (n == NULL) {
@@ -180,8 +185,9 @@ void kmain(multiboot_info_t* mbd, u32int magic) {
*kvt << "Not a file : " << tokens[1] << "\n";
} else {
FileNode* f = (FileNode*) n;
- u8int *buff = (u8int*)Mem::kalloc(f->getLength());
+ u8int *buff = (u8int*)Mem::kalloc(f->getLength() + 1);
f->read(0, f->getLength(), buff);
+ buff[f->getLength()] = 0;
*kvt << String((const char*) buff);
Mem::kfree(buff);
}