From 31965a48a64436ce2be47e7989201cd8f135b604 Mon Sep 17 00:00:00 2001 From: Jaewon Choi <jaewon.james.choi@gmail.com> Date: Sun, 1 Oct 2017 20:08:21 +0900 Subject: [PATCH] Implements mysh_parse_command() --- src/utils.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/utils.c b/src/utils.c index 619c771..1785ed8 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'; + } } -- GitLab