Fixed up base64_dump() users and interfaces to fix memory leaks
[jigit.git] / jd_interface.c
1 /*
2  * jd_interface.c
3  *
4  * Interfaces for building an ISO image, using the data stored in the DB
5  *
6  * Copyright (c) 2005 Steve McIntyre <steve@einval.com>
7  *
8  * GPL v2 - see COPYING
9  */
10
11 #include <errno.h>
12 #include <math.h>
13 #include <stdlib.h>
14 #include <stdio.h>
15 #include <string.h>
16 #include <limits.h>
17 #include <sys/types.h>
18 #include <sys/stat.h>
19 #include <fcntl.h>
20 #include <unistd.h>
21 #include <sys/mman.h>
22 #include "endian.h"
23 #include "jigdb.h"
24 #include "jte.h"
25
26 typedef struct _jd_state
27 {
28     char *template_filename;
29     FILE *template;
30 } jd_state_t;
31
32 JD *jd_open(char *template_file)
33 {
34     jd_state_t *jd = NULL;
35     
36     jd = calloc(1, sizeof(jd_state_t));
37     if (!jd)
38     {
39         errno = ENOMEM;
40         return NULL;
41     }
42     
43     jd->template_filename = template_file;
44     jd->template = fopen(template_file, "rb");
45     if (!jd->template)
46     {
47         free(jd);
48         return NULL;
49     }
50
51     return jd;
52 }
53
54 int jd_close(JD *state)
55 {
56     jd_state_t *jd = state;
57     
58     if (jd)
59     {
60         if (jd->template)
61             fclose(jd->template);
62         free(jd);
63     }
64     return 0;
65 }
66
67 int jd_md5(JD *state, unsigned char md5[16]);
68
69 int jd_read(JD *state, INT64 start_offset, INT64 length, unsigned char *buffer, INT64 *bytes_read);
70 int jd_size(JD *state, INT64 *size);
71 int jd_last_filename(JD *state, char **name);