commit 30b86e1bc38b57a7fc6fb226917bf47c6867bcbc Author: aaron Date: Mon May 11 17:44:07 2026 +0200 wrote base functions diff --git a/main.c b/main.c new file mode 100644 index 0000000..3005e1d --- /dev/null +++ b/main.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +char **parse(char *line) { + char **args= malloc(64 * sizeof(char *)); + int i = 0; + char *token = strtok(line, " \t\n"); + while(token !=NULL) { + args[i] = token; + i++; + token = strtok(NULL, " \t\n"); + } + args[i] = NULL; + return args; +} +int main() { + char line[1024]; + while(1) { + printf("$"); + fflush(stdout); + char *result = fgets(line, sizeof(line), stdin); + if(result == NULL) return 0; + char **parsed = parse(line); + if(parsed[0] == NULL) { free(parsed); continue; } + pid_t pid = fork(); + if(pid == 0) { + if(execvp(parsed[0], parsed) == -1 ) { + perror("tinysh"); + exit(1); + } + } else if(pid > 0) { + wait(NULL); + } + free(parsed); + } +} +