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 
iso9660_open(iso9660_VOLUME * volume,const char * pathname)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 }
40