diff --git a/src/main.c b/src/main.c index d675d0b0fcedd2d78b43a1030ec15f7d2ce7fb40..2c0a665ec9cca52d1b3d5d2741c6fece6aa29f36 100644 --- a/src/main.c +++ b/src/main.c @@ -1,13 +1,56 @@ +#define _GNU_SOURCE + +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> +#include <unistd.h> +#include "common.h" +#include "vector.h" + +void help(const char* callname) { + fprintf(stderr, "\nUSAGE: %s <INPUT_FILE> <OUTPUT_FILE>\n", callname); +} + +int_t read_int(FILE* file) { + char* line; + size_t len; + char* rest; + getline(&line, &len, file); + return strtol(line, &rest, 10); +} + +bool read_vector_int(FILE* file, vector_int_t* vector) { + char* line; + size_t len; + char* rest; + for (size_t i = 0; i < vector->dim; ++i) { + getline(&line, &len, file); + vector->data[i] = strtol(line, &rest, 10); + } +} int main(int argc, char** argv) { - fprintf(stderr, "USAGE: %s <INPUT_FILE> <OUTPUT_FILE>\n", argv[0]); - char* ipath = "/dev/stdin"; - char* opath = "/dev/stdout"; - if (argc > 1) ipath = argv[1]; + if (argc <= 1) help(argv[0]); + char* ipath = NULL; + char* opath = NULL; + if (argc > 1) { + ipath = argv[1]; + if (access(ipath, F_OK) == -1) { + fprintf(stderr, "IFILE: [ %s ] file does not exist !", ipath); + return EXIT_FAILURE; + } + } if (argc > 2) opath = argv[2]; + // READ + FILE* ifile = ipath != NULL ? fopen(ipath, "r") : stdin; + const size_t dim = read_int(ifile); + const int_t nclusters = read_int(ifile); + int_t next; + while () + fscanf(ifile, "%ld", &next); + // WRITE + FILE* ofile = opath != NULL ? fopen(opath, "w") : stdout; // TODO return EXIT_SUCCESS; } diff --git a/src/vector.c b/src/vector.c index d30b3ef765c94d6df15aafe2101ce57d1eea55ac..c4f7dba0e1c1743af1333d84d0052ea405231d60 100644 --- a/src/vector.c +++ b/src/vector.c @@ -8,7 +8,8 @@ vector_int_t* vector_int_create(const size_t dim, const int_t* data) { vector_int_t* v; - if ((v = malloc(dim * sizeof(int))) == NULL) return NULL; + //if ((v = malloc(dim * sizeof(int))) == NULL) return NULL; + if ((v = calloc(dim, sizeof(int))) == NULL) return NULL; v->dim = dim; for (size_t i = 0; i < dim; ++i) v->data[i] = data[i]; return v;