|
|
|
@ -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
|
|
|
|
|