summaryrefslogtreecommitdiff
path: root/file_reader.c
diff options
context:
space:
mode:
Diffstat (limited to 'file_reader.c')
-rwxr-xr-xfile_reader.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/file_reader.c b/file_reader.c
new file mode 100755
index 0000000..eea7761
--- /dev/null
+++ b/file_reader.c
@@ -0,0 +1,42 @@
1#include "file_reader.h"
2
3#define BUFFER_SIZE 16384
4
5File* file_open(const char* filename)
6{
7 File* retval = malloc(sizeof(File));
8 retval->name = filename;
9 retval->data = malloc(0);
10 retval->size = 0;
11 FILE* file = fopen(filename, "rb");
12 if(file)
13 {
14 do
15 {
16 retval->data = realloc(retval->data, retval->size + BUFFER_SIZE);
17 retval->size += fread(&retval->data[retval->size], 1, BUFFER_SIZE, file);
18 } while(!feof(file));
19 retval->data = realloc(retval->data, retval->size);
20 fclose(file);
21 return retval;
22 }
23 else
24 {
25 perror(filename);
26 return NULL;
27 }
28}
29
30void file_close(File* file)
31{
32 free(file->data);
33 free(file);
34}
35
36int main()
37{
38 File* file = file_open("strict.dtd");
39 puts(file->data);
40 file_close(file);
41 return 0;
42}
..