1#include <stdio.h>
2#include <stdlib.h>
3
4#include "ulepng.h"
5
6ulepng ulepng_init(void)
7{
8 ulepng png = { NULL, 0, ULEPNG_ERR_NONE };
9 return png;
10}
11
12ulepng ulepng_init_file(const char* path)
13{
14 ulepng png = ulepng_init();
15 ulepng_load_file(&png, path);
16 return png;
17}
18
19void ulepng_load_file(ulepng* png, const char* path)
20{
21 FILE* file = NULL;
22
23 file = fopen(path, "rb");
24 if (file == NULL) {
25 png->err = ULEPNG_ERR_FOPEN;
26 return;
27 }
28
29 /* get file size */
30 fseek(file, 0L, SEEK_END);
31 png->size = ftell(file);
32 rewind(file);
33
34 png->data = malloc(png->size);
35 if (png->data == NULL) {
36 png->err = ULEPNG_ERR_OOM;
37 goto cleanup;
38 }
39
40 fread(png->data, 1, png->size, file);
41
42cleanup:
43 fclose(file);
44}
45