master uint/libule / source / ulepng.c
 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