New API calls isoburn_get_attached_start_lba(), isoburn_attach_start_lba()
This commit is contained in:
parent
a1d6593972
commit
7f794c5035
@ -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_size= Libisoburn_target_head_sizE;
|
||||||
o->target_iso_head= NULL;
|
o->target_iso_head= NULL;
|
||||||
o->image= NULL;
|
o->image= NULL;
|
||||||
|
o->image_start_lba= -1;
|
||||||
o->iso_data_source= NULL;
|
o->iso_data_source= NULL;
|
||||||
o->read_pacifier= NULL;
|
o->read_pacifier= NULL;
|
||||||
o->read_pacifier_handle= NULL;
|
o->read_pacifier_handle= NULL;
|
||||||
|
@ -141,6 +141,9 @@ struct isoburn {
|
|||||||
/* Libisofs image context */
|
/* Libisofs image context */
|
||||||
IsoImage *image;
|
IsoImage *image;
|
||||||
|
|
||||||
|
/* The start LBA of the image */
|
||||||
|
int image_start_lba;
|
||||||
|
|
||||||
/* The block data source from which the existing image is read.
|
/* The block data source from which the existing image is read.
|
||||||
*/
|
*/
|
||||||
IsoDataSource *iso_data_source;
|
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)
|
static void isoburn_idle_free_function(void *ignored)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -133,6 +148,7 @@ int isoburn_read_image(struct burn_drive *d,
|
|||||||
if (ret < 0 || o == NULL)
|
if (ret < 0 || o == NULL)
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
status = isoburn_disc_get_status(d);
|
status = isoburn_disc_get_status(d);
|
||||||
|
o->image_start_lba= -1;
|
||||||
}
|
}
|
||||||
if(read_opts==NULL) {
|
if(read_opts==NULL) {
|
||||||
isoburn_msgs_submit(o, 0x00060000,
|
isoburn_msgs_submit(o, 0x00060000,
|
||||||
@ -193,6 +209,8 @@ create_blank_image:;
|
|||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
{ret= -2; goto ex;}
|
{ret= -2; goto ex;}
|
||||||
ms_block= int_num;
|
ms_block= int_num;
|
||||||
|
if (o != NULL)
|
||||||
|
o->image_start_lba= ms_block;
|
||||||
ret = isoburn_read_iso_head(d, int_num, &dummy, NULL, 0);
|
ret = isoburn_read_iso_head(d, int_num, &dummy, NULL, 0);
|
||||||
if (ret <= 0) {
|
if (ret <= 0) {
|
||||||
sprintf(msg, "No ISO 9660 image at LBA %d. Creating blank image.", int_num);
|
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)
|
if(o->image != NULL)
|
||||||
iso_image_unref(o->image);
|
iso_image_unref(o->image);
|
||||||
o->image = image;
|
o->image = image;
|
||||||
|
o->image_start_lba = -1;
|
||||||
return(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
|
/* API function. See libisoburn.h
|
||||||
*/
|
*/
|
||||||
int isoburn_activate_session(struct burn_drive *drive)
|
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);
|
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.
|
/** 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
|
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);
|
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
|
/** Return the best possible estimation of the currently available capacity of
|
||||||
the medium. This might depend on particular write option settings and on
|
the medium. This might depend on particular write option settings and on
|
||||||
drive state.
|
drive state.
|
||||||
|
@ -2,6 +2,7 @@ LIBISOBURN1 {
|
|||||||
global:
|
global:
|
||||||
isoburn_activate_session;
|
isoburn_activate_session;
|
||||||
isoburn_attach_image;
|
isoburn_attach_image;
|
||||||
|
isoburn_attach_start_lba;
|
||||||
isoburn_cancel_prepared_write;
|
isoburn_cancel_prepared_write;
|
||||||
isoburn_disc_available_space;
|
isoburn_disc_available_space;
|
||||||
isoburn_disc_erasable;
|
isoburn_disc_erasable;
|
||||||
@ -18,6 +19,7 @@ isoburn_drive_set_msgs_submit;
|
|||||||
isoburn_drive_wrote_well;
|
isoburn_drive_wrote_well;
|
||||||
isoburn_finish;
|
isoburn_finish;
|
||||||
isoburn_get_attached_image;
|
isoburn_get_attached_image;
|
||||||
|
isoburn_get_attached_start_lba;
|
||||||
isoburn_get_fifo_status;
|
isoburn_get_fifo_status;
|
||||||
isoburn_get_min_start_byte;
|
isoburn_get_min_start_byte;
|
||||||
isoburn_get_mount_params;
|
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