|
|
|
@ -10,7 +10,7 @@ |
|
|
|
|
/** Overview
|
|
|
|
|
|
|
|
|
|
libisoburn is a frontend for libraries libburn and libisofs which enables |
|
|
|
|
creation and expansion of ISO-9660 filesystems on all CD/DVD media supported |
|
|
|
|
creation and expansion of ISO-9660 filesystems on all CD/DVD/BD media supported |
|
|
|
|
by libburn. This includes media like DVD+RW, which do not support multi-session |
|
|
|
|
management on media level and even plain disk files or block devices. |
|
|
|
|
|
|
|
|
@ -101,7 +101,7 @@ To prepare for such an image generation run, use isoburn_prepare_new_image(). |
|
|
|
|
Blind Growing: |
|
|
|
|
This method reads the old image from one drive and writes the add-on session |
|
|
|
|
to a different drive. That output drive is nevertheless supposed to |
|
|
|
|
finally lead to the same media from where the session was loaded. Usually it |
|
|
|
|
finally lead to the same medium from where the session was loaded. Usually it |
|
|
|
|
will be stdio:/dev/fd/1 (i.e. stdout) being piped into some burn program |
|
|
|
|
like with this classic gesture: |
|
|
|
|
mkisofs -M $dev -C $msc1,$nwa | cdrecord -waiti dev=$dev |
|
|
|
@ -472,7 +472,7 @@ int isoburn_drive_set_msgs_submit(struct burn_drive *d, |
|
|
|
|
void *submit_handle, int submit_flag, int flag); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Inquire the media status. Expect the whole spectrum of libburn BURN_DISC_*
|
|
|
|
|
/** Inquire the medium status. Expect the whole spectrum of libburn BURN_DISC_*
|
|
|
|
|
with multi-session media. Emulated states with random access media are |
|
|
|
|
BURN_DISC_BLANK and BURN_DISC_APPENDABLE. |
|
|
|
|
Wrapper for: burn_disc_get_status() |
|
|
|
@ -488,7 +488,7 @@ enum burn_disc_status isoburn_disc_get_status(struct burn_drive *drive); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Tells whether the media can be treated by isoburn_disc_erase().
|
|
|
|
|
/** Tells whether the medium can be treated by isoburn_disc_erase().
|
|
|
|
|
Wrapper for: burn_disc_erasable() |
|
|
|
|
@since 0.1.0 |
|
|
|
|
@param d The drive to inquire. |
|
|
|
@ -497,13 +497,13 @@ enum burn_disc_status isoburn_disc_get_status(struct burn_drive *drive); |
|
|
|
|
int isoburn_disc_erasable(struct burn_drive *d); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Mark the media as blank. With multi-session media this will call
|
|
|
|
|
/** Mark the medium as blank. With multi-session media this will call
|
|
|
|
|
burn_disc_erase(). With random access media, an eventual ISO-9660 |
|
|
|
|
filesystem will get invalidated by altering its start blocks on media. |
|
|
|
|
In case of success, the media is in status BURN_DISC_BLANK afterwards. |
|
|
|
|
filesystem will get invalidated by altering its start blocks on the medium. |
|
|
|
|
In case of success, the medium is in status BURN_DISC_BLANK afterwards. |
|
|
|
|
Wrapper for: burn_disc_erase() |
|
|
|
|
@since 0.1.0 |
|
|
|
|
@param drive The drive with the media to erase. |
|
|
|
|
@param drive The drive with the medium to erase. |
|
|
|
|
@param fast 1=fast erase, 0=thorough erase |
|
|
|
|
With DVD-RW, fast erase yields media incapable of multi-session. |
|
|
|
|
*/ |
|
|
|
@ -574,7 +574,7 @@ struct isoburn_toc_track; |
|
|
|
|
isoburn_toc_disc_free() when no longer needed. |
|
|
|
|
Wrapper for: burn_drive_get_disc() |
|
|
|
|
@since 0.1.6 |
|
|
|
|
@param d The drive with the media to inspect |
|
|
|
|
@param d The drive with the medium to inspect |
|
|
|
|
@return NULL in case there is no content info, else it is a valid handle |
|
|
|
|
*/ |
|
|
|
|
struct isoburn_toc_disc *isoburn_toc_drive_get_disc(struct burn_drive *d); |
|
|
|
@ -584,7 +584,7 @@ struct isoburn_toc_disc *isoburn_toc_drive_get_disc(struct burn_drive *d); |
|
|
|
|
This number includes the eventual gaps between sessions and tracks. |
|
|
|
|
So this call is not really a wrapper for burn_disc_get_sectors(). |
|
|
|
|
@since 0.1.6 |
|
|
|
|
@param disc The master handle of the media |
|
|
|
|
@param disc The master handle of the medium |
|
|
|
|
@return Number of blocks, <=0 indicates unknown or unreadable state |
|
|
|
|
*/ |
|
|
|
|
int isoburn_toc_disc_get_sectors(struct isoburn_toc_disc *disc); |
|
|
|
@ -593,7 +593,7 @@ int isoburn_toc_disc_get_sectors(struct isoburn_toc_disc *disc); |
|
|
|
|
/** Get the array of session handles from the table of content.
|
|
|
|
|
Wrapper for: burn_disc_get_sessions() |
|
|
|
|
@since 0.1.6 |
|
|
|
|
@param disc The master handle of the media |
|
|
|
|
@param disc The master handle of the medium |
|
|
|
|
@param num returns the number of sessions in the array |
|
|
|
|
@return the address of the array of session handles |
|
|
|
|
*/ |
|
|
|
@ -663,11 +663,11 @@ int isoburn_toc_track_get_emul(struct isoburn_toc_track *t, int *start_lba, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Release the memory associated with a master handle of media.
|
|
|
|
|
/** Release the memory associated with a master handle of a medium.
|
|
|
|
|
The handle is invalid afterwards and may not be used any more. |
|
|
|
|
Wrapper for: burn_disc_free() |
|
|
|
|
@since 0.1.6 |
|
|
|
|
@param disc The master handle of the media |
|
|
|
|
@param disc The master handle of the medium |
|
|
|
|
*/ |
|
|
|
|
void isoburn_toc_disc_free(struct isoburn_toc_disc *disc); |
|
|
|
|
|
|
|
|
@ -676,7 +676,7 @@ void isoburn_toc_disc_free(struct isoburn_toc_disc *disc); |
|
|
|
|
image header and obtain its alleged size. Depending on the info mode |
|
|
|
|
one other string of text information can be retrieved too. |
|
|
|
|
@since 0.1.6 |
|
|
|
|
@param d The drive with the media to inspect |
|
|
|
|
@param d The drive with the medium to inspect |
|
|
|
|
@param lba The block number from where to read |
|
|
|
|
@param image_blocks Returns the number of 2048 bytes blocks in the session |
|
|
|
|
@param info Caller provided memory, enough to take eventual info reply |
|
|
|
@ -686,7 +686,8 @@ void isoburn_toc_disc_free(struct isoburn_toc_disc *disc); |
|
|
|
|
2= @since 0.2.2 : |
|
|
|
|
copy 64 kB header to info (needs 65536 bytes)
|
|
|
|
|
bit13= @since 0.2.2: |
|
|
|
|
do not read head from media but use first 64 kB from info |
|
|
|
|
do not read head from medium but use first 64 kB from |
|
|
|
|
info |
|
|
|
|
bit14= check both half buffers (not only second) |
|
|
|
|
return 2 if found in first block |
|
|
|
|
bit15= return -1 on read error |
|
|
|
@ -1292,11 +1293,11 @@ int isoburn_igopt_get_fifo_size(struct isoburn_imgen_opts *o, int *fifo_size); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Obtain after image preparation the block address where the session will
|
|
|
|
|
start on media. |
|
|
|
|
start on the medium. |
|
|
|
|
This value cannot be set by the application but only be inquired. |
|
|
|
|
@since 0.1.4 |
|
|
|
|
@param o The option set to work on |
|
|
|
|
@param lba The block number of the session start on media. |
|
|
|
|
@param lba The block number of the session start on the medium. |
|
|
|
|
<0 means that no address has been determined yet. |
|
|
|
|
@return 1 success, <=0 failure |
|
|
|
|
*/ |
|
|
|
@ -1310,7 +1311,7 @@ int isoburn_igopt_get_effective_lba(struct isoburn_imgen_opts *o, int *lba); |
|
|
|
|
This value cannot be set by the application but only be inquired. |
|
|
|
|
@since 0.3.6 |
|
|
|
|
@param o The option set to work on |
|
|
|
|
@param lba The block number of the session start on media. |
|
|
|
|
@param lba The block number of the session start on the medium. |
|
|
|
|
<0 means that no address has been determined yet. |
|
|
|
|
@return 1 success, <=0 failure |
|
|
|
|
*/ |
|
|
|
@ -1621,7 +1622,7 @@ int isoburn_igopt_get_disc_label(struct isoburn_imgen_opts *opts, |
|
|
|
|
IsoImage *isoburn_get_attached_image(struct burn_drive *d); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Load the ISO filesystem directory tree from the media in the given drive.
|
|
|
|
|
/** Load the ISO filesystem directory tree from the medium in the given drive.
|
|
|
|
|
This will give libisoburn the base on which it can let libisofs perform |
|
|
|
|
image growing or image modification. The loaded volset gets attached |
|
|
|
|
to the drive object and handed out to the application. |
|
|
|
@ -1689,7 +1690,7 @@ int isoburn_get_img_partition_offset(struct burn_drive *drive, |
|
|
|
|
/** Set the IsoImage to be used with a drive. This eventually releases
|
|
|
|
|
the reference to the old IsoImage attached to the drive. |
|
|
|
|
Caution: Use with care. It hardly makes sense to replace an image that |
|
|
|
|
reflects a valid ISO image on media. |
|
|
|
|
reflects a valid ISO image on the medium. |
|
|
|
|
This call is rather intended for writing a newly created and populated |
|
|
|
|
image to blank media. The use case in xorriso is to let an image survive |
|
|
|
|
the change or demise of the outdev target drive.
|
|
|
|
@ -1706,7 +1707,7 @@ int isoburn_attach_image(struct burn_drive *d, IsoImage *image); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Return the best possible estimation of the currently available capacity of
|
|
|
|
|
the media. This might depend on particular write option settings and on |
|
|
|
|
the medium. This might depend on particular write option settings and on |
|
|
|
|
drive state. |
|
|
|
|
An eventual start address for emulated multi-session will be subtracted |
|
|
|
|
from the capacity estimation given by burn_disc_available_space(). |
|
|
|
@ -1721,7 +1722,7 @@ off_t isoburn_disc_available_space(struct burn_drive *d, |
|
|
|
|
struct burn_write_opts *o); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Obtain the start block number of the most recent session on media. In
|
|
|
|
|
/** Obtain the start block number of the most recent session on the medium. In
|
|
|
|
|
case of random access media this will normally be 0. Successfull return is |
|
|
|
|
not a guarantee that there is a ISO-9660 image at all. The call will fail, |
|
|
|
|
nevertheless,if isoburn_disc_get_status() returns not BURN_DISC_APPENDABLE |
|
|
|
@ -1757,7 +1758,7 @@ int isoburn_disc_track_lba_nwa(struct burn_drive *d, struct burn_write_opts *o, |
|
|
|
|
overwriteable media. This value is supposed to be <= 2048 * nwa as of |
|
|
|
|
isoburn_disc_track_lba_nwa(). |
|
|
|
|
@since 0.1.0 |
|
|
|
|
@param d The drive holding the media. |
|
|
|
|
@param d The drive holding the medium. |
|
|
|
|
@param start_byte The reply value counted in bytes, not in sectors. |
|
|
|
|
@param flag Unused yet. Submit 0. |
|
|
|
|
@return 1=stat_byte is valid, 0=not an emulated appendable, -1=error
|
|
|
|
@ -1768,7 +1769,7 @@ int isoburn_get_min_start_byte(struct burn_drive *d, off_t *start_byte, |
|
|
|
|
|
|
|
|
|
/** To choose the expansion method of Growing:
|
|
|
|
|
Create a disc object for writing the new session from the created or loaded |
|
|
|
|
iso_volset which has been manipulated via libisofs, to the same media from |
|
|
|
|
iso_volset which has been manipulated via libisofs, to the same medium from |
|
|
|
|
where the image was eventually loaded. This struct burn_disc is ready for |
|
|
|
|
use by a subsequent call to isoburn_disc_write(). |
|
|
|
|
After this asynchronous writing has ended and the drive is BURN_DRIVE_IDLE |
|
|
|
@ -1787,7 +1788,7 @@ int isoburn_prepare_disc(struct burn_drive *drive, struct burn_disc **disc, |
|
|
|
|
/** To choose the expansion method of Modifying:
|
|
|
|
|
Create a disc object for producing a new image from a previous image |
|
|
|
|
plus the changes made by user. The generated burn_disc is suitable |
|
|
|
|
to be written to a grabbed drive with blank writeable media. |
|
|
|
|
to be written to a grabbed drive with blank writeable medium. |
|
|
|
|
But you must not use the same drive for input and output, because data |
|
|
|
|
will be read from the source drive while at the same time the target |
|
|
|
|
drive is already writing. |
|
|
|
@ -1798,7 +1799,8 @@ int isoburn_prepare_disc(struct burn_drive *drive, struct burn_disc **disc, |
|
|
|
|
@param in_drive The input drive, grabbed with isoburn_drive_aquire() or |
|
|
|
|
one of its alternatives. |
|
|
|
|
@param disc Returns the newly created burn_disc object. |
|
|
|
|
@param opts Options for image generation and data transport to media. |
|
|
|
|
@param opts Options for image generation and data transport to the |
|
|
|
|
medium. |
|
|
|
|
@param out_drive The output drive, from isoburn_drive_aquire() et.al.. |
|
|
|
|
@return <=0 error , 1 = success |
|
|
|
|
*/ |
|
|
|
@ -1818,9 +1820,9 @@ int isoburn_prepare_new_image(struct burn_drive *in_drive, |
|
|
|
|
Parameter translation into libisoburn: |
|
|
|
|
$dev is the address by which parameter in_drive of this call was aquired |
|
|
|
|
$msc1 was set by isoburn_set_msc1() before image reading |
|
|
|
|
or was detected from the in_drive media |
|
|
|
|
or was detected from the in_drive medium |
|
|
|
|
$nwa is a parameter of this call |
|
|
|
|
or can be used as detected from the in_drive media |
|
|
|
|
or can be used as detected from the in_drive medium |
|
|
|
|
|
|
|
|
|
This call waits for libisofs output to become available and then detaches |
|
|
|
|
the input drive object from the data source object by which libisofs was |
|
|
|
@ -1841,10 +1843,10 @@ int isoburn_prepare_new_image(struct burn_drive *in_drive, |
|
|
|
|
@param out_drive The output drive, from isoburn_drive_aquire() et.al.. |
|
|
|
|
typically stdio:/dev/fd/1 . |
|
|
|
|
@param nwa The address (2048 byte block count) where the add-on |
|
|
|
|
session will be finally stored on a mountable media |
|
|
|
|
session will be finally stored on a mountable medium |
|
|
|
|
or in a mountable file. |
|
|
|
|
If nwa is -1 then the address is used as determined from |
|
|
|
|
the in_drive media. |
|
|
|
|
the in_drive medium. |
|
|
|
|
@return <=0 error , 1 = success |
|
|
|
|
*/ |
|
|
|
|
int isoburn_prepare_blind_grow(struct burn_drive *in_drive, |
|
|
|
@ -1970,7 +1972,7 @@ int isoburn_sync_after_write(struct burn_drive *input_drive, |
|
|
|
|
Wrapper for: burn_drive_release() |
|
|
|
|
@since 0.1.0 |
|
|
|
|
@param drive The drive to be released |
|
|
|
|
@param eject 1= eject media from drive , 0= do not eject |
|
|
|
|
@param eject 1= eject medium from drive , 0= do not eject |
|
|
|
|
*/ |
|
|
|
|
void isoburn_drive_release(struct burn_drive *drive, int eject); |
|
|
|
|
|
|
|
|
@ -1988,7 +1990,7 @@ void isoburn_finish(void); |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Inquire wether the media needs emulation or would be suitable for
|
|
|
|
|
/** Inquire wether the medium needs emulation or would be suitable for
|
|
|
|
|
generic multi-session via libburn. |
|
|
|
|
@since 0.1.0 |
|
|
|
|
@param d The drive to inquire |
|
|
|
|