New API calls isoburn_get_attached_start_lba(), isoburn_attach_start_lba()
This commit is contained in:
parent
a61a461fa0
commit
719ef2a6d3
@ -142,6 +142,7 @@ int isoburn_new(struct isoburn **objpt, int flag)
|
||||
o->target_iso_head_size= Libisoburn_target_head_sizE;
|
||||
o->target_iso_head= NULL;
|
||||
o->image= NULL;
|
||||
o->image_start_lba= -1;
|
||||
o->iso_data_source= NULL;
|
||||
o->read_pacifier= NULL;
|
||||
o->read_pacifier_handle= NULL;
|
||||
|
@ -141,6 +141,9 @@ struct isoburn {
|
||||
/* Libisofs image context */
|
||||
IsoImage *image;
|
||||
|
||||
/* The start LBA of the image */
|
||||
int image_start_lba;
|
||||
|
||||
/* The block data source from which the existing image is read.
|
||||
*/
|
||||
IsoDataSource *iso_data_source;
|
||||
|
@ -105,6 +105,21 @@ IsoImage *isoburn_get_attached_image(struct burn_drive *d)
|
||||
}
|
||||
|
||||
|
||||
/* API */
|
||||
int isoburn_get_attached_start_lba(struct burn_drive *d)
|
||||
{
|
||||
int ret;
|
||||
struct isoburn *o= NULL;
|
||||
|
||||
ret = isoburn_find_emulator(&o, d, 0);
|
||||
if (ret < 0 || o == NULL)
|
||||
return -1;
|
||||
if(o->image == NULL)
|
||||
return -1;
|
||||
return o->image_start_lba;
|
||||
}
|
||||
|
||||
|
||||
static void isoburn_idle_free_function(void *ignored)
|
||||
{
|
||||
return;
|
||||
@ -133,6 +148,7 @@ int isoburn_read_image(struct burn_drive *d,
|
||||
if (ret < 0 || o == NULL)
|
||||
{ret= 0; goto ex;}
|
||||
status = isoburn_disc_get_status(d);
|
||||
o->image_start_lba= -1;
|
||||
}
|
||||
if(read_opts==NULL) {
|
||||
isoburn_msgs_submit(o, 0x00060000,
|
||||
@ -193,6 +209,8 @@ create_blank_image:;
|
||||
if (ret <= 0)
|
||||
{ret= -2; goto ex;}
|
||||
ms_block= int_num;
|
||||
if (o != NULL)
|
||||
o->image_start_lba= ms_block;
|
||||
ret = isoburn_read_iso_head(d, int_num, &dummy, NULL, 0);
|
||||
if (ret <= 0) {
|
||||
sprintf(msg, "No ISO 9660 image at LBA %d. Creating blank image.", int_num);
|
||||
@ -312,10 +330,29 @@ int isoburn_attach_image(struct burn_drive *d, IsoImage *image)
|
||||
if(o->image != NULL)
|
||||
iso_image_unref(o->image);
|
||||
o->image = image;
|
||||
o->image_start_lba = -1;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* API */
|
||||
int isoburn_attach_start_lba(struct burn_drive *d, int lba, int flag)
|
||||
{
|
||||
int ret;
|
||||
struct isoburn *o;
|
||||
|
||||
ret = isoburn_find_emulator(&o, d, 0);
|
||||
if(ret < 0)
|
||||
return ret;
|
||||
if(o == NULL)
|
||||
return 0;
|
||||
if(o->image == NULL)
|
||||
return 0;
|
||||
o->image_start_lba = lba;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* API function. See libisoburn.h
|
||||
*/
|
||||
int isoburn_activate_session(struct burn_drive *drive)
|
||||
|
@ -1629,6 +1629,14 @@ int isoburn_igopt_get_disc_label(struct isoburn_imgen_opts *opts,
|
||||
*/
|
||||
IsoImage *isoburn_get_attached_image(struct burn_drive *d);
|
||||
|
||||
/** Get the start address of the image that is attached to the drive, if any.
|
||||
@since 1.2.2
|
||||
@param d The drive to inquire
|
||||
@return The logical block address where the System Area of the image
|
||||
starts. <0 means that the address is invalid.
|
||||
*/
|
||||
int isoburn_get_attached_start_lba(struct burn_drive *d);
|
||||
|
||||
|
||||
/** 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
|
||||
@ -1714,6 +1722,17 @@ int isoburn_get_img_partition_offset(struct burn_drive *drive,
|
||||
int isoburn_attach_image(struct burn_drive *d, IsoImage *image);
|
||||
|
||||
|
||||
/** Set the start address of the image that is attached to the drive, if any.
|
||||
@since 1.2.2
|
||||
@param d The drive to inquire
|
||||
@param lba The logical block address where the System Area of the image
|
||||
starts. <0 means that the address is invalid.
|
||||
@param flag Bitfield, submit 0 for now.
|
||||
@return <=0 error (e.g. because no image is attached), 1 = success
|
||||
*/
|
||||
int isoburn_attach_start_lba(struct burn_drive *d, int lba, int flag);
|
||||
|
||||
|
||||
/** Return the best possible estimation of the currently available capacity of
|
||||
the medium. This might depend on particular write option settings and on
|
||||
drive state.
|
||||
|
@ -2,6 +2,7 @@ LIBISOBURN1 {
|
||||
global:
|
||||
isoburn_activate_session;
|
||||
isoburn_attach_image;
|
||||
isoburn_attach_start_lba;
|
||||
isoburn_cancel_prepared_write;
|
||||
isoburn_disc_available_space;
|
||||
isoburn_disc_erasable;
|
||||
@ -18,6 +19,7 @@ isoburn_drive_set_msgs_submit;
|
||||
isoburn_drive_wrote_well;
|
||||
isoburn_finish;
|
||||
isoburn_get_attached_image;
|
||||
isoburn_get_attached_start_lba;
|
||||
isoburn_get_fifo_status;
|
||||
isoburn_get_min_start_byte;
|
||||
isoburn_get_mount_params;
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2012.02.01.163200"
|
||||
#define Xorriso_timestamP "2012.02.14.103107"
|
||||
|
Loading…
Reference in New Issue
Block a user