Improve IsoFileSource interface implementation.

This commit is contained in:
Vreixo Formoso
2007-12-20 20:47:39 +01:00
parent f2e3a2c9fc
commit a161f4249c
9 changed files with 125 additions and 59 deletions

View File

@ -381,7 +381,7 @@ void lfs_free(IsoFileSource *src)
/* close the file if it is already openned */
if (data->openned) {
src->close(src);
src->class->close(src);
}
free(data->path);
@ -389,6 +389,20 @@ void lfs_free(IsoFileSource *src)
iso_filesystem_unref(lfs);
}
IsoFileSourceIface lfs_class = {
lfs_get_path,
lfs_get_name,
lfs_lstat,
lfs_stat,
lfs_open,
lfs_close,
lfs_read,
lfs_readdir,
lfs_readlink,
lfs_get_filesystem,
lfs_free
};
/**
*
* @return
@ -435,17 +449,7 @@ int iso_file_source_new_lfs(const char *path, IsoFileSource **src)
lfs_src->refcount = 1;
lfs_src->data = data;
lfs_src->get_path = lfs_get_path;
lfs_src->get_name = lfs_get_name;
lfs_src->lstat = lfs_lstat;
lfs_src->stat = lfs_stat;
lfs_src->open = lfs_open;
lfs_src->close = lfs_close;
lfs_src->read = lfs_read;
lfs_src->readdir = lfs_readdir;
lfs_src->readlink = lfs_readlink;
lfs_src->get_filesystem = lfs_get_filesystem;
lfs_src->free = lfs_free;
lfs_src->class = &lfs_class;
/* take a ref to local filesystem */
iso_filesystem_ref(lfs);