diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 44 |
1 files changed, 0 insertions, 44 deletions
@@ -1,44 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "util.h" - -int -read_file(char *path, char **output, size_t * read_size) -{ - long file_size; - FILE *fp; - - fp = fopen(path, "r"); - if (fp == NULL) - return -1; - - /* get file size */ - if (fseek(fp, 0L, SEEK_END) != 0) - return -1; - - file_size = ftell(fp); - if (file_size < 0) - return -1; - - /* rewind to file start */ - if (fseek(fp, 0L, SEEK_SET) != 0) - return -1; - - /* create output buffer */ - *output = malloc(sizeof(char) * (file_size + 1)); - if (*output == NULL) - return -1; - - /* read the file */ - *read_size = fread(*output, sizeof(char), file_size, fp); - if (*read_size == 0 || ferror(fp) != 0) { - free(*output); - return -1; - } - /* enforce string termination */ - (*output)[*read_size] = '\0'; - - return 0; -} |