EMILE/libiso9660/iso9660_open.c

40 lines
784 B
C
Raw Normal View History

2005-11-12 19:12:13 +00:00
/*
*
* (c) 2005 Laurent Vivier <Laurent@Vivier.EU>
2005-11-12 19:12:13 +00:00
*
*/
#include <stdlib.h>
#include "libiso9660.h"
#include "iso9660.h"
2005-11-12 19:12:13 +00:00
stream_FILE* iso9660_open(stream_VOLUME *volume, char* pathname)
2005-11-12 19:12:13 +00:00
{
struct iso_directory_record *root;
struct iso_directory_record *idr;
iso9660_FILE *file;
root = iso9660_get_root_node((iso9660_VOLUME*)volume);
2005-11-12 19:12:13 +00:00
if (root == NULL)
return NULL;
idr = iso9660_get_node((iso9660_VOLUME*)volume, root, pathname);
2005-11-12 19:12:13 +00:00
if (idr == NULL)
return NULL;
file = (iso9660_FILE*)malloc(sizeof(iso9660_FILE));
if (file == NULL)
return NULL;
2007-02-24 11:42:45 +00:00
file->base = isonum_733((char *)idr->extent);
file->size = isonum_733((char *)idr->size);
file->offset = 0;
file->current = -1;
file->volume = (iso9660_VOLUME*)volume;
2005-11-12 19:12:13 +00:00
free(idr);
return (stream_FILE*)file;
2005-11-12 19:12:13 +00:00
}