#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
#include <assert.h>
#include <sys/wait.h>

int main()
{
  while (1) {
    printf("daniel@fancyshell> ");
    char* line = 0;
    size_t size = 0;
    getline(&line,&size,stdin);
    line[strlen(line)-1] = 0;
    printf("alright, i will run '%s'\n",line);
    size_t words = 1;
    size_t linesize = strlen(line);
    for (size_t i = 0; i < linesize; ++i)
      if (line[i] == ' ')
        words++;
    char** argv = malloc(sizeof(char*) * (words+1));
    // "ls . . . ."
    //  ^    
    argv[0] = line;
    size_t argc = 1;
    for (size_t i = 0; i < linesize; ++i)
    {
      if (line[i] == ' ')
      {
        line[i] = 0;
        argv[argc++] = line + i + 1;
      }
    }
    argv[argc] = 0;
    //for (size_t i = 0; i < words+1; ++i)
    //  printf("argv[%zu] == %s\n",i,argv[i]);
    int pid = fork();
    if (pid == 0)
      execvp(argv[0],argv);
    else
      waitpid(pid,0,0);
  }
  return 0;
}