From b6242144334129f6c1975d931a26c69400c406bf Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sat, 4 Oct 2025 01:38:59 +0200 Subject: [PATCH] fs Add mkd subcommand for creating directories --- user/fs/main.c | 18 ++++++++++-------- user/fs/mkd.c | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 user/fs/mkd.c diff --git a/user/fs/main.c b/user/fs/main.c index 9ab759b..689f38a 100644 --- a/user/fs/main.c +++ b/user/fs/main.c @@ -2,8 +2,8 @@ #include #include -extern void fs_fetch(void); -extern void fs_mkf(void); +#define CMDS(X) \ + X(fetch) X(mkf) X(mkd) void main(void) { if (argslen() == 0) { @@ -12,11 +12,13 @@ void main(void) { char *cmd = args()[0]; - if (string_strcmp(cmd, "fetch") == 0) { - fs_fetch(); - } else if (string_strcmp(cmd, "mkf") == 0) { - fs_mkf(); - } else { - uprintf("fs: unknown command %s\n", cmd); + #define X(name) if (string_strcmp(cmd, #name) == 0) { \ + extern void fs_ ## name(void); \ + fs_ ## name(); \ + return; \ } + CMDS(X) + #undef X + + uprintf("fs: unknown command %s\n", cmd); } diff --git a/user/fs/mkd.c b/user/fs/mkd.c new file mode 100644 index 0000000..89b9268 --- /dev/null +++ b/user/fs/mkd.c @@ -0,0 +1,17 @@ +#include +#include +#include + +void fs_mkd(void) { + if (argslen() < 2) { + uprintf("fs: Not enough arguments\n"); + return; + } + + char *path = *(args()+1); + + int32_t r = ioctl(IOCTL_NOHANDLE, IOCTL_MKDIR, (uint64_t)path, 0, 0); + if (r != E_OK) { + uprintf("fs: could not create %s\n", path); + } +}