#include <unistd.h>
#include <stdio.h> 
#include <strings.h> 
#include <sys/types.h>
#include <sys/wait.h>

#include "parse.h"
#include "debug.h"

#define module_name "execute"
 
int execute(char *filename, char* argv[], int deamonize) 
{
  pid_t child;
  int status;

  child = fork();

  if(!child)
  {
    DEBUG("I am a child executing in a new environment\n");

    execvp(filename, argv);
    perror("fsh");

    exit(-1);
  }

  if(!deamonize)
  {
    DEBUG("I am a parent waiting away");

    waitpid(child, &status, 0);

    /* flush std buffers in case the child is dumb */
    fflush(stdout);
    fflush(stderr);
    fflush(stdin);
           
    DEBUG("waiting complete");
  }
  else
    DEBUG("program deamonized, so I continue...");

  return 0;
}

