From 81609b6b8af6325bf25fe5431d31fe51e0b08567 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 3 Feb 2022 08:07:59 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15430 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/sb/apps/msh/main.c | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/os/sb/apps/msh/main.c b/os/sb/apps/msh/main.c index 2d51b008d..a34c536a6 100644 --- a/os/sb/apps/msh/main.c +++ b/os/sb/apps/msh/main.c @@ -197,6 +197,36 @@ static void cmd_exit(int argc, char *argv[]) { _exit(msg); } +static void cmd_mkdir(int argc, char *argv[]) { + int ret; + + if (argc != 2) { + shell_usage("mkdir "); + return; + } + + ret = mkdir(argv[1], 0777); + if (ret == -1) { + shell_error(argv[1]); + shell_error(": Creation failed" SHELL_NEWLINE_STR); + } +} + +static void cmd_mv(int argc, char *argv[]) { + int ret; + + if (argc != 3) { + shell_usage("mv "); + return; + } + + ret = rename(argv[1], argv[2]); + if (ret == -1) { + shell_error(argv[1]); + shell_error(": No such file or directory" SHELL_NEWLINE_STR); + } +} + static void cmd_path(int argc, char *argv[]) { char *s; @@ -214,6 +244,36 @@ static void cmd_path(int argc, char *argv[]) { } } +static void cmd_rm(int argc, char *argv[]) { + int ret; + + if (argc != 2) { + shell_usage("rm "); + return; + } + + ret = unlink(argv[1]); + if (ret == -1) { + shell_error(argv[1]); + shell_error(": No such file or directory" SHELL_NEWLINE_STR); + } +} + +static void cmd_rmdir(int argc, char *argv[]) { + int ret; + + if (argc != 2) { + shell_usage("rmdir "); + return; + } + + ret = rmdir(argv[1]); + if (ret == -1) { + shell_error(argv[1]); + shell_error(": Remove failed" SHELL_NEWLINE_STR); + } +} + static bool shell_execute(int argc, char *argv[]) { extern int runelf(int argc, char *argv[], char *envp[]); char *fname = argv[0]; @@ -226,8 +286,12 @@ static bool shell_execute(int argc, char *argv[]) { {"cd", cmd_cd}, {"env", cmd_env}, {"exit", cmd_exit}, + {"mkdir", cmd_mkdir}, + {"mv", cmd_mv}, {"path", cmd_path}, {"pwd", cmd_pwd}, + {"rm", cmd_rm}, + {"rmdir", cmd_rmdir}, {NULL, NULL} };