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)11iso9660_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