diff options
Diffstat (limited to 'src/init')
-rw-r--r-- | src/init/shell.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/init/shell.c b/src/init/shell.c index 53ad995..7cb8a8c 100644 --- a/src/init/shell.c +++ b/src/init/shell.c @@ -44,10 +44,13 @@ static int readline(char *buf, size_t max) { } static void cmd_cat(const char *args) { - int fd = _syscall_open(args, strlen(args)); + int fd; static char buf[256]; int len = 256; + if (!args) return; // no argument + + fd = _syscall_open(args, strlen(args)); if (fd < 0) { printf("couldn't open.\n"); return; @@ -71,6 +74,18 @@ void shell_loop(void) { printf("%s\n", args); } else if (!strcmp(cmd, "cat")) { cmd_cat(args); + } else if (!strcmp(cmd, "catall")) { + const char *files[] = { + "/init/fake.txt", + "/init/1.txt", "/init/2.txt", + "/init/dir/3.txt", NULL}; + for (int i = 0; files[i]; i++) { + printf("%s:\n", files[i]); + cmd_cat(files[i]); + printf("\n"); + } + } else if (!strcmp(cmd, "shadow")) { + _syscall_mount(-1, args, strlen(args)); } else if (!strcmp(cmd, "exit")) { _syscall_exit(0); } else if (!strcmp(cmd, "fork")) { |