From ff148daf32416b1447e4d06613526944f9227eae Mon Sep 17 00:00:00 2001 From: bigsketti Date: Sat, 30 Nov 2024 10:57:54 -0500 Subject: [PATCH] added "ls" command --- cshell | Bin 16672 -> 16864 bytes handleJSON.c | 4 +++- main.c | 33 +++++++++++++++++++++++++++++---- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/cshell b/cshell index 33b949f668a662015dd268ab3272b2c37826bbd9..a0c0a52c288c3d3e8a81d292575e969bd4a6fe56 100755 GIT binary patch delta 3500 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 O>DpE;yEAeAp`QSJ;FCT8 diff --git a/handleJSON.c b/handleJSON.c index 3dd9a49..533c085 100644 --- a/handleJSON.c +++ b/handleJSON.c @@ -43,5 +43,7 @@ void skipWhiteSpace(int *pos, char currentChar) { } void tokenizeJSON() { + // TODO: finish this after token type functions +} -} \ No newline at end of file +// TODO: make functions to handle types of tokens \ No newline at end of file diff --git a/main.c b/main.c index fe6e506..b1cb15f 100644 --- a/main.c +++ b/main.c @@ -2,8 +2,10 @@ #include #include #include +#include #include #include +#include #define INPUT_SIZE 1024 #define VERSION 0.1f @@ -60,6 +62,26 @@ char* getCWD() { // current working directory } } +void listDirectorys(const char *path) { + struct dirent *entry; + DIR *dp = opendir(path); + + if (dp == NULL) { + perror("Directory read failed"); + return; + } + + while ((entry = readdir(dp))) { + // skips hidden entries + if (entry->d_name[0] == '.') { + continue; + } + printf("%s\n", entry->d_name); + } + + closedir(dp); + } + int main() { char input[INPUT_SIZE]; char *args[100]; @@ -82,7 +104,7 @@ int main() { parse_input(input, args); - // built in command checks + // built in command checks // TODO: add commands to handle creating and deleting users // also modify permissions for admin users and regular users @@ -94,7 +116,7 @@ int main() { exit(0); } else if (strcmp("help", args[0]) == 0) { - printf("Welcome to cShell, my simple terminal written in C\nBuilt-in commands:\n\texit\n\thelp\n\tcd [dir name]\n\tversion\n\tmkdir [dir name]\n\trmdir [dir name]\n\tmkfile [file name]\n\trmfile [file name]\n\n"); + printf("Welcome to cShell, my simple terminal written in C\nBuilt-in commands:\n\texit\n\thelp\n\tcd [dir name]\n\tversion\n\tmkdir [dir name]\n\trmdir [dir name]\n\tmkfile [file name]\n\trmfile [file name]\n\tls [path optional]\n\n"); continue; } else if (strcmp("version", args[0]) == 0) { @@ -139,9 +161,12 @@ int main() { perror("Error removing directory"); } else { printf("success\n"); } continue; - } else if (strcmp("ls", args[0])) { - // TODO: finish this hoe + } else if (strcmp("ls", args[0]) == 0) { + const char *path = args[1] ? args[1] : "."; + listDirectorys(path); + continue; + } // execute the external command