iso_data_source Struct Reference

Data source used by libisofs for reading an existing image. More...

#include <libisofs.h>


Data Fields

int version
unsigned int refcount
 Reference count for the data source.
int(* open )(IsoDataSource *src)
 Opens the given source.
int(* close )(IsoDataSource *src)
 Close a given source, freeing all system resources previously grabbed in open().
int(* read_block )(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
 Read an arbitrary block (2048 bytes) of data from the source.
void(* free_data )(IsoDataSource *)
 Clean up the source specific data.
void * data
 Source specific data.


Detailed Description

Data source used by libisofs for reading an existing image.

It offers homogeneous read access to arbitrary blocks to different sources for images, such as .iso files, CD/DVD drives, etc...

To create a multisession image, libisofs needs a IsoDataSource, that the user must provide. The function iso_data_source_new_from_file() constructs an IsoDataSource that uses POSIX I/O functions to access data. You can use it with regular .iso images, and also with block devices that represent a drive.

Since:
0.6.2

Definition at line 256 of file libisofs.h.


Field Documentation

Close a given source, freeing all system resources previously grabbed in open().

Returns:
1 if success, < 0 on error (has to be a valid libisofs error code)

Source specific data.

Definition at line 313 of file libisofs.h.

Clean up the source specific data.

Never call this directly, it is automatically called by iso_data_source_unref() when refcount reach 0.

Opens the given source.

You must open() the source before any attempt to read data from it. The open is the right place for grabbing the underlying resources.

Returns:
1 if success, < 0 on error (has to be a valid libisofs error code)

int(* iso_data_source::read_block)(IsoDataSource *src, uint32_t lba, uint8_t *buffer)

Read an arbitrary block (2048 bytes) of data from the source.

Parameters:
lba Block to be read.
buffer Buffer where the data will be written. It should have at least 2048 bytes.
Returns:
1 if success, < 0 if error. This function has to emit a valid libisofs error code. Predifined (but not mandatory) for this purpose are: ISO_DATA_SOURCE_SORRY , ISO_DATA_SOURCE_MISHAP, ISO_DATA_SOURCE_FAILURE , ISO_DATA_SOURCE_FATAL

Reference count for the data source.

Should be 1 when a new source is created. Don't access it directly, but with iso_data_source_ref() and iso_data_source_unref() functions.

Definition at line 267 of file libisofs.h.

Definition at line 260 of file libisofs.h.


The documentation for this struct was generated from the following file:

Generated for libisofs by  doxygen 1.5.7.1