Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / fs / iso9660 / iso9660_open.c
1 /*
2  *
3  * (c) 2005-2009 Laurent Vivier <Laurent@vivier.eu>
4  *
5  * This file has been copied from EMILE, http://emile.sf.net
6  *
7  */
8
9 #include "libiso9660.h"
10
11 iso9660_FILE* iso9660_open(iso9660_VOLUME *volume, const char* pathname)
12 {
13         struct iso_directory_record *root;
14         struct iso_directory_record *idr;
15         iso9660_FILE *file;
16
17         root = iso9660_get_root_node(volume);
18         if (root == NULL)
19                 return NULL;
20
21         idr = iso9660_get_node(volume, root, pathname);
22         if (idr == NULL)
23                 return NULL;
24
25         file = (iso9660_FILE*)malloc(sizeof(iso9660_FILE));
26         if (file == NULL)
27                 return NULL;
28
29         file->base = isonum_733((char *)idr->extent);
30         file->size = isonum_733((char *)idr->size);
31         file->offset = 0;
32         file->current = -1;
33         file->volume = volume;
34         file->path = strdup(pathname);
35
36         free(idr);
37
38         return file;
39 }