diff --git a/src/filereader.c b/src/filereader.c index e672fc7..b72aeee 100644 --- a/src/filereader.c +++ b/src/filereader.c @@ -76,8 +76,13 @@ char *read_file(char const * const filename) int fd = 0; size_t str_size = 0; ssize_t n; + size_t file_length = 0; fd = open(filename, O_RDONLY); + file_length = lseek(fd, 0, SEEK_END) + 1; + lseek(fd, 0, SEEK_SET); + + string = malloc(sizeof(char) * file_length); if (fd != -1) { /* read and copy chunks */ @@ -88,11 +93,6 @@ char *read_file(char const * const filename) str_size += n; /* count total bytes read */ - REALLOC( /* allocate correct size */ - string, /* pointer to realloc */ - str_size /* total bytes read */ - + 1); /* space for trailing NULL byte */ - /* append buffer to string */ memcpy(string + (str_size - n), buf, (size_t)n); }