From a2ce97bef9ce64c7ee394b6c33188d52d1175f9c Mon Sep 17 00:00:00 2001 From: hasufell Date: Sun, 8 Jun 2014 03:01:51 +0200 Subject: [PATCH] Optimize file reading function Former-commit-id: fd7b0850c404210c9cb73d698e3750ef656f2f78 --- src/filereader.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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); }