#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <string.h>
#include <fnmatch.h>
#include <libgen.h>
#include <sys/stat.h>

#include "cfs.h"

void usage()
{
   fprintf(stderr, "Usage: cfspack [-p pattern] [/path/to/dir...]\n");
}

int main(int argc, char *argv[])
{
   int patterncount = 0;
   char **patterns = malloc(sizeof(char**));
   patterns[0] = NULL;
   while (1) {
       int c = getopt(argc, argv, "p:");
       if (c < 0) {
           break;
       }
       switch (c) {
           case 'p':
               patterns[patterncount] = optarg;
               patterncount++;
               patterns = realloc(patterns, sizeof(char**)*(patterncount+1));
               patterns[patterncount] = NULL;
               break;
           default:
               usage();
               return 1;
       }
   }
   int res = 0;
   for (int i=optind; i<argc; i++) {
       if (is_regular_file(argv[i])) {
           // special case: just one file
           res = spitblock(argv[i], basename(argv[i]));
       } else {
           res = spitdir(argv[i], "", patterns);
       }
   }
   if (res == 0) {
       spitempty();
   }
   free(patterns);
   return res;
}