diff --git a/src/mm.c b/src/mm.c deleted file mode 100644 index 2c7e4e0..0000000 --- a/src/mm.c +++ /dev/null @@ -1,95 +0,0 @@ -#include -#include -#include -#include "libmm.h" - -#define STDIN_NAME "" -#define STDOUT_NAME "" - -enum error{ /* possible errors */ - FILE_ACCESS_ERROR, - REALLOC_ERROR -}; - -void -error(char *argv0, char *file_name, enum error errcode){ - switch(errcode){ - case FILE_ACCESS_ERROR: - fprintf(stderr, "%s: %s: cannot open file\n", argv0, file_name); - break; - case REALLOC_ERROR: - fprintf(stderr, "%s: error reallocating array\n", argv0); - break; - } - exit(1); -} - -int -main(int argc, char *argv[]){ - char *file_name; - FILE **input = (FILE **)malloc(sizeof(FILE*)); - FILE **output = (FILE **)malloc(sizeof(FILE*)); - int i; - size_t inputc = 1; - size_t outputc = 1; - *input = NULL; - *output = NULL; - - /* messy argparsing, fix me to use POSIX getopt */ - for(i = 1; i < argc; ++i){ - if(!strcmp(argv[i++], "-i")){ - if(i == argc){ - fprintf(stderr, "%s: Missing option argument for \"-i\"\n", argv[0]); - return 1; - } - file_name = argv[i]; - input[inputc-1] = fopen(file_name, "r"); - if(input[inputc-1] == NULL){ - free(input); - free(output); - error(argv[0], file_name, FILE_ACCESS_ERROR); - } - /* in one go, increment inputc, reallocate the input array, and set the new space in the array to NULL */ - if((input = realloc(input, sizeof(FILE*) * (++inputc))) == NULL){ - free(output); - error(argv[0], file_name, REALLOC_ERROR); - } - input[inputc-1] = NULL; - }else if(!strcmp(argv[i++], "-o")){ - if(i == argc){ - fprintf(stderr, "%s: Missing option argument for \"-o\"\n", argv[0]); - return 1; - } - file_name = argv[i]; - output[outputc-1] = fopen(file_name, "r"); - if(input[outputc-1] == NULL){ - free(input); - free(output); - error(argv[0], file_name, FILE_ACCESS_ERROR); - } - if((output = realloc(output, sizeof(FILE*) * (++outputc))) == NULL){ - free(input); - error(argv[0], file_name, REALLOC_ERROR); - } - output[outputc-1] = NULL; - }else{ - fprintf(stderr, "%s: %s: Unrecognized option.\n", argv[0], argv[i]); - return 1; - } - } - - /* default to stdin/stdout */ - if(*input == NULL){ - *input = stdout; - ++inputc; - } - if(*output = NULL){ - *output = stdout; - ++outputc; - } - - for(i = 0; i < inputc; ++i) - tee(input[inputc], output, outputc); - - return 0; -}