#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include "makeargv.h"
int main(int argc, char *argv[]){
  char **myargv, delim[] = " \t";
  pid_t childpid, waitreturn;
  int status;
  if (argc != 2) {
    fprintf(stderr, "Usage: %s string\n", argv[0]);
    exit(EXIT_FAILURE);
  }
  if ((childpid = fork()) == -1) {
    perror("The fork failed");
    exit(EXIT_FAILURE);
  } else if (childpid == 0) {                        
    /* child code */
    if (makeargv(argv[1], delim, &myargv) < 0) {
      fprintf(stderr, "Argument array could not be constructed\n");
      exit(EXIT_FAILURE);
    } else if (execvp(myargv[0], &myargv[0]) < 0) {
      perror("The exec of command failed");
      exit(EXIT_FAILURE);
    }   
  } else                                            
    /* parent code */
    while(childpid != (waitreturn = wait(&status)))
      if ((waitreturn == -1) && (errno != EINTR))
        break;
  exit(EXIT_SUCCESS);
}