file.c (669B)
1 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include "file.h" 5 6 #include <sys/stat.h> 7 8 time_t file_mtime(const char *filename) { 9 // TODO: windows file_mtime 10 struct stat stats; 11 stat(filename, &stats); 12 13 return stats.st_mtime; 14 } 15 16 unsigned char *file_contents(const char *filename, size_t *length) { 17 FILE *f = fopen(filename, "r"); 18 unsigned char *buffer; 19 20 if (!f) { 21 fprintf(stderr, "Unable to open %s for reading\n", filename); 22 return NULL; 23 } 24 25 fseek(f, 0, SEEK_END); 26 *length = (size_t)ftell(f); 27 fseek(f, 0, SEEK_SET); 28 29 buffer = malloc(*length+1); 30 *length = fread(buffer, 1, *length, f); 31 fclose(f); 32 33 buffer[*length] = 0; 34 35 return buffer; 36 }