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';
+  }
 }