diff --git a/src/utils.c b/src/utils.c index 619c771cd29d38dcf0e265e8688b55e1cfe3d6a0..1785ed8e1838a79eb205328214787b7f90b3911f 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,7 +1,35 @@ #include "utils.h" +#include <stdlib.h> +#include <string.h> + void mysh_parse_command(const char* command, int *argc, char*** argv) { - // TODO: Fill this! + const int kMaxArgc = 512; + *argv = (char**)malloc(kMaxArgc); + + char buf[4096]; + strcpy(buf, command); + + char *tok = strtok(buf, " \n\t"); + + int ti = 0; + + while (tok != NULL) { + (*argv)[ti] = (char*)malloc(strlen(tok)); + strcpy((*argv)[ti], tok); + + ++ti; + + tok = strtok(NULL, " \n\t"); + } + + *argc = ti; + + if (*argc == 0) { + *argc = 1; + (*argv)[0] = (char*)malloc(1); + (*argv)[0][0] = '\0'; + } }