diff --git a/src/fs_image.c b/src/fs_image.c index 6f9c1f6..e16e747 100644 --- a/src/fs_image.c +++ b/src/fs_image.c @@ -1663,6 +1663,7 @@ int iso_image_filesystem_new(IsoDataSource *src, struct iso_read_opts *opts, goto fs_cleanup; } + strncpy(ifs->type, "iso ", 4); ifs->data = data; ifs->refcount = 1; ifs->get_root = ifs_get_root; diff --git a/src/fs_image.h b/src/fs_image.h index 88bb0b1..1f69cea 100644 --- a/src/fs_image.h +++ b/src/fs_image.h @@ -24,22 +24,58 @@ typedef IsoFilesystem IsoImageFilesystem; int iso_image_filesystem_new(IsoDataSource *src, struct iso_read_opts *opts, int msgid, IsoImageFilesystem **fs); +/** + * Get the volset identifier for an existent image. The returned string belong + * to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_volset_id(IsoImageFilesystem *fs); +/** + * Get the volume identifier for an existent image. The returned string belong + * to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_volume_id(IsoImageFilesystem *fs); +/** + * Get the publisher identifier for an existent image. The returned string + * belong to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_publisher_id(IsoImageFilesystem *fs); +/** + * Get the data preparer identifier for an existent image. The returned string + * belong to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_data_preparer_id(IsoImageFilesystem *fs); +/** + * Get the system identifier for an existent image. The returned string belong + * to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_system_id(IsoImageFilesystem *fs); +/** + * Get the application identifier for an existent image. The returned string + * belong to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_application_id(IsoImageFilesystem *fs); +/** + * Get the copyright file identifier for an existent image. The returned string + * belong to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_copyright_file_id(IsoImageFilesystem *fs); +/** + * Get the abstract file identifier for an existent image. The returned string + * belong to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_abstract_file_id(IsoImageFilesystem *fs); +/** + * Get the biblio file identifier for an existent image. The returned string + * belong to the IsoImageFilesystem and shouldn't be free() nor modified. + */ const char *iso_image_fs_get_biblio_file_id(IsoImageFilesystem *fs); #endif /*LIBISO_FS_IMAGE_H_*/ diff --git a/src/fs_local.c b/src/fs_local.c index e2e066f..442bbe4 100644 --- a/src/fs_local.c +++ b/src/fs_local.c @@ -629,6 +629,7 @@ int iso_local_filesystem_new(IsoFilesystem **fs) } /* fill struct */ + strncpy(lfs->type, "file", 4); lfs->refcount = 1; lfs->data = NULL; /* we don't need private data */ lfs->get_root = lfs_get_root; diff --git a/src/fsource.h b/src/fsource.h index eb63fdf..af54377 100644 --- a/src/fsource.h +++ b/src/fsource.h @@ -26,6 +26,7 @@ typedef struct Iso_File_Source IsoFileSource; typedef struct Iso_Filesystem IsoFilesystem; +typedef struct IsoFileSource_Iface IsoFileSourceIface; /** * See IsoFilesystem->get_id() for info about this. @@ -51,6 +52,12 @@ extern unsigned int iso_fs_global_id; */ struct Iso_Filesystem { + /** + * Type of filesystem. + * "file" -> local filesystem + * "iso " -> iso image filesystem + */ + char type[4]; /** * Get the root of a filesystem. @@ -123,7 +130,7 @@ struct Iso_Filesystem void *data; }; -typedef struct IsoFileSource_Iface +struct IsoFileSource_Iface { /** @@ -306,7 +313,7 @@ typedef struct IsoFileSource_Iface * TODO #00004 Add a get_mime_type() function. * This can be useful for GUI apps, to choose the icon of the file */ -} IsoFileSourceIface; +}; struct Iso_File_Source { @@ -492,7 +499,15 @@ int iso_file_source_readlink(IsoFileSource *src, char *buf, size_t bufsiz); */ IsoFilesystem* iso_file_source_get_filesystem(IsoFileSource *src); +/** + * Take a ref to the given IsoFilesystem + */ void iso_filesystem_ref(IsoFilesystem *fs); + +/** + * Drop your ref to the given IsoFilesystem, evetually freeing associated + * resources. + */ void iso_filesystem_unref(IsoFilesystem *fs); /** diff --git a/src/libisofs.h b/src/libisofs.h index 65ac801..2580279 100644 --- a/src/libisofs.h +++ b/src/libisofs.h @@ -93,11 +93,13 @@ enum iso_replace_mode { */ }; +typedef struct ecma119_write_opts Ecma119WriteOpts; + /** * Holds the options for the image generation. */ -typedef struct -{ +struct ecma119_write_opts { + int level; /**< ISO level to write at. */ /** Which extensions to support. */ @@ -252,9 +254,9 @@ typedef struct * buffer. */ size_t fifo_size; -} Ecma119WriteOpts; +}; -typedef struct Iso_Data_Source IsoDataSource; +typedef struct iso_data_source IsoDataSource; /** * Data source used by libisofs for reading an existing image. @@ -268,7 +270,7 @@ typedef struct Iso_Data_Source IsoDataSource; * it with regular .iso images, and also with block devices that represent a * drive. */ -struct Iso_Data_Source { +struct iso_data_source { /** * Reference count for the data source. Should be 1 when a new source diff --git a/src/node.c b/src/node.c index 139fc2a..ef02297 100644 --- a/src/node.c +++ b/src/node.c @@ -530,7 +530,7 @@ int iso_dir_iter_remove(IsoDirIter *iter) } /** - * Get the destination of a node (in UTF-8). + * Get the destination of a node. * The returned string belongs to the node and should not be modified nor * freed. Use strdup if you really need your own copy. */