From 5b7d0106a52c4602ebf5e6a57f492388ec5d2ee9 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Mon, 1 Apr 2024 03:29:34 +0300 Subject: [PATCH] Fix handling of symbolic links in cd and ls commands --- kshell/commands/cd.cpp | 3 +++ kshell/commands/ls.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/kshell/commands/cd.cpp b/kshell/commands/cd.cpp index f8d2668d..89f9ad00 100644 --- a/kshell/commands/cd.cpp +++ b/kshell/commands/cd.cpp @@ -36,6 +36,9 @@ void cmd_cd(const char *args) return; } + if (thisNode->Type == NodeType::SYMLINK) + thisNode = fs->GetNodeFromPath(thisNode->Symlink); + if (thisNode->Type != NodeType::DIRECTORY) { printf("cd: %s: Not a directory\n", args); diff --git a/kshell/commands/ls.cpp b/kshell/commands/ls.cpp index 9509f9da..005811f6 100644 --- a/kshell/commands/ls.cpp +++ b/kshell/commands/ls.cpp @@ -89,6 +89,9 @@ void cmd_ls(const char *args) return; } + if (thisNode->Type == NodeType::SYMLINK) + thisNode = fs->GetNodeFromPath(thisNode->Symlink); + if (thisNode->Type != NodeType::DIRECTORY) { printf("%s%s\n", ColorNodeType(thisNode), thisNode->Name);