#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <dirent.h>

int dirf(char*);
int forcleaning(char*);

int main(int argc, char **argv)
{
  dirf("/usr/ports");
  exit(0);
}

int dirf(char *dirpath){
  char *fdir;
  DIR *dir;
  struct dirent *ls;
  dir = opendir(dirpath);
  fdir = (char *)malloc(1024);
  memset(fdir, 0, 1024);

  /* readdir er en lorte funktion */
  while ((ls = readdir(dir))){
     if(ls->d_type == 4){
        if(strcmp(ls->d_name, ".")  == 0|| strcmp(ls->d_name, "..") == 0){
        }
        else{
          sprintf(fdir,"%s/%s",dirpath,ls->d_name);
          if(strcmp(ls->d_name, "work") == 0 ){
            forcleaning(dirpath);
          }
          dirf(fdir);
        }
     }
  }
  closedir(dir);
  /* Fuck hvor jeg hader sprog hvor man skal garbage collect'e selv... */
  free(fdir);
}

int forcleaning(char *entry){
  chdir(entry);
  if(fork() == 0){
    printf("Cleaning in %s\n", entry);
    execl("/usr/bin/make","make", "clean", NULL );
  }
  return(0);
}
