|
|
|
@ -75,10 +75,10 @@ job parameters. It rather states its desires which libisoburn tries to
|
|
|
|
|
fulfill, or else will refuse to start the write run.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Setup for Growing or Modifying
|
|
|
|
|
Setup for Growing, Modifying or Blind Growing
|
|
|
|
|
|
|
|
|
|
The connector function family offers two alternative API calls for performing
|
|
|
|
|
the setup for two alternative image generation strategies.
|
|
|
|
|
the setup for several alternative image generation strategies.
|
|
|
|
|
|
|
|
|
|
Growing:
|
|
|
|
|
If input and output drive is the same, then isoburn_prepare_disc() is to
|
|
|
|
@ -93,6 +93,16 @@ generation run, use isoburn_prepare_new_image(). The run will copy file data
|
|
|
|
|
from an eventual input drive with valid image, add any newly introduced data
|
|
|
|
|
from the local filesystem, and produce a first session on output media.
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
Blind growing is prepared by the call isoburn_prepare_blind_grow().
|
|
|
|
|
The input drive should be released immediately after this call.
|
|
|
|
|
|
|
|
|
|
After either of these setups, some peripheral libburn drive parameter settings
|
|
|
|
|
like burn_write_opts_set_simulate(), burn_write_opts_set_multi(),
|
|
|
|
|
burn_drive_set_speed(), burn_write_opts_set_underrun_proof() should be made.
|
|
|
|
@ -1068,7 +1078,8 @@ int isoburn_get_min_start_byte(struct burn_drive *d, off_t *start_byte,
|
|
|
|
|
int flag);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Create a disc object for writing the new session from the created or loaded
|
|
|
|
|
/** 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
|
|
|
|
|
where the image was eventually loaded. This struct burn_disc is ready for
|
|
|
|
|
use by a subsequent call to isoburn_disc_write().
|
|
|
|
@ -1085,9 +1096,10 @@ int isoburn_prepare_disc(struct burn_drive *drive, struct burn_disc **disc,
|
|
|
|
|
struct isoburn_imgen_opts *opts);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Create a disc object for producing a new image from a previous image
|
|
|
|
|
/** 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 any grabbed libburn drive with blank writeable media.
|
|
|
|
|
to be written to a grabbed drive with blank writeable media.
|
|
|
|
|
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.
|
|
|
|
@ -1095,15 +1107,11 @@ int isoburn_prepare_disc(struct burn_drive *drive, struct burn_disc **disc,
|
|
|
|
|
is done and the drive is BURN_DRIVE_IDLE again after asynchronous
|
|
|
|
|
burn_disc_write().
|
|
|
|
|
@since 0.1.0
|
|
|
|
|
@param in_drive The input drive,grabbed with isoburn_drive_scan_and_grab().
|
|
|
|
|
@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 out_drive The libburn drive which shall be write target.
|
|
|
|
|
If the drive was grabbed via libisoburn then it can later
|
|
|
|
|
access the libisofs source fifo via
|
|
|
|
|
isoburn_get_fifo_status().
|
|
|
|
|
Mere libburn drives cannot obtain this info.
|
|
|
|
|
In that case out_drive may be NULL, as well.
|
|
|
|
|
@param out_drive The output drive, from isoburn_drive_aquire() et.al..
|
|
|
|
|
@return <=0 error , 1 = success
|
|
|
|
|
*/
|
|
|
|
|
int isoburn_prepare_new_image(struct burn_drive *in_drive,
|
|
|
|
@ -1111,7 +1119,52 @@ int isoburn_prepare_new_image(struct burn_drive *in_drive,
|
|
|
|
|
struct isoburn_imgen_opts *opts,
|
|
|
|
|
struct burn_drive *out_drive);
|
|
|
|
|
|
|
|
|
|
/** @since 0.1.0
|
|
|
|
|
|
|
|
|
|
/** To choose the expansion method of Blind Growing:
|
|
|
|
|
Create a disc object for writing an add-on session from the created or
|
|
|
|
|
loaded IsoImage which has been manipulated via libisofs, to a different
|
|
|
|
|
drive than the one from where it was loaded.
|
|
|
|
|
Usually output 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
|
|
|
|
|
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
|
|
|
|
|
$nwa is a parameter of this call
|
|
|
|
|
or can be used as detected from the in_drive media
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
reading from the input drive.
|
|
|
|
|
So, as far as libisofs is concerned, that drive may be released immediately
|
|
|
|
|
after this call in order to allow the consumer to access the drive for
|
|
|
|
|
writing.
|
|
|
|
|
The consumer should wait for input to become available and only then open
|
|
|
|
|
its burn drive. With cdrecord this is caused by option -waiti.
|
|
|
|
|
|
|
|
|
|
The resulting burn_disc object has to be disposed when all its writing
|
|
|
|
|
is done and the drive is BURN_DRIVE_IDLE again after asynchronous
|
|
|
|
|
burn_disc_write().
|
|
|
|
|
@since 0.2.2
|
|
|
|
|
@param in_drive The input drive,grabbed with isoburn_drive_scan_and_grab().
|
|
|
|
|
@param disc Returns the newly created burn_disc object.
|
|
|
|
|
@param opts Options for image generation and data transport to media.
|
|
|
|
|
@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
|
|
|
|
|
or in a mountable file.
|
|
|
|
|
If nwa is -1 then the address is used as determined from
|
|
|
|
|
the in_drive media.
|
|
|
|
|
@return <=0 error , 1 = success
|
|
|
|
|
*/
|
|
|
|
|
int isoburn_prepare_blind_grow(struct burn_drive *d, struct burn_disc **disc,
|
|
|
|
|
struct isoburn_imgen_opts *opts,
|
|
|
|
|
struct burn_drive *out_drive, int nwa);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
Revoke isoburn_prepare_new_image() or isoburn_prepare_disc() instead of
|
|
|
|
|
running isoburn_disc_write().
|
|
|
|
|
libisofs reserves resources and maybe already starts generating the
|
|
|
|
@ -1193,8 +1246,7 @@ int isoburn_drive_wrote_well(struct burn_drive *d);
|
|
|
|
|
int isoburn_activate_session(struct burn_drive *drive);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** @since 0.1.0
|
|
|
|
|
Wait after normal end of operations until libisofs ended all write
|
|
|
|
|
/** Wait after normal end of operations until libisofs ended all write
|
|
|
|
|
threads and freed resource reservations.
|
|
|
|
|
This call is not mandatory. But without it, messages from the ending
|
|
|
|
|
threads might appear after the application ended its write procedure.
|
|
|
|
@ -1210,21 +1262,6 @@ int isoburn_sync_after_write(struct burn_drive *input_drive,
|
|
|
|
|
struct burn_drive *output_drive, int flag);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
/* >>> NOT YET IMPLEMENTED <<< */
|
|
|
|
|
/** Write a new session to a disc.
|
|
|
|
|
This is a synchronous call equivalent to isoburn_prepare_disc +
|
|
|
|
|
isoburn_disc_write + isoburn_activate_session
|
|
|
|
|
@param pacifier_func If not NULL: a function to produce appeasing messages.
|
|
|
|
|
See burn_abort_pacifier() in libburn.h for an example.
|
|
|
|
|
*/
|
|
|
|
|
/* TODO implement this */
|
|
|
|
|
int isoburn_perform_write(struct burn_write_opts *o,
|
|
|
|
|
int (*pacifier_func)(void *handle, int patience,
|
|
|
|
|
int elapsed));
|
|
|
|
|
#endif /* 0 */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Release an aquired drive.
|
|
|
|
|
Wrapper for: burn_drive_release()
|
|
|
|
|
@since 0.1.0
|
|
|
|
|