Provisory new API calls isoburn_igopt_set_prep_partition, isoburn_igopt_set_efi_bootp

This commit is contained in:
Thomas Schmitt 2012-06-12 11:33:46 +00:00
parent 9e497e369f
commit 8bff64f692
5 changed files with 115 additions and 1 deletions

View File

@ -571,6 +571,22 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
opts->partition_secs_per_head,
opts->partition_heads_per_cyl);
iso_write_opts_set_tail_blocks(wopts, opts->tail_blocks);
if(opts->prep_partition != NULL) {
ret = iso_write_opts_set_prep_img(wopts, opts->prep_partition, 0);
if(ret < 0) {
isoburn_report_iso_error(ret, "Cannot set path for PreP partition",
0, "FAILURE", 0);
{ret= -1; goto ex;}
}
}
if(opts->efi_boot_partition != NULL) {
ret = iso_write_opts_set_efi_bootp(wopts, opts->efi_boot_partition, 0);
if(ret < 0) {
isoburn_report_iso_error(ret, "Cannot set path for EFI system partition",
0, "FAILURE", 0);
{ret= -1; goto ex;}
}
}
for(i= 0; i < Libisoburn_max_appended_partitionS; i++) {
if(opts->appended_partitions[i] == NULL)
continue;
@ -1072,6 +1088,8 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->vol_effective_time= 0;
o->libjte_handle= NULL;
o->tail_blocks= 0;
o->prep_partition= NULL;
o->efi_boot_partition= NULL;
for(i= 0; i < Libisoburn_max_appended_partitionS; i++) {
o->appended_partitions[i]= NULL;
o->appended_part_types[i]= 0;
@ -1089,6 +1107,10 @@ int isoburn_igopt_destroy(struct isoburn_imgen_opts **o, int flag)
return(0);
if((*o)->rr_reloc_dir != NULL)
free((*o)->rr_reloc_dir);
if((*o)->prep_partition != NULL)
free((*o)->prep_partition);
if((*o)->efi_boot_partition != NULL)
free((*o)->efi_boot_partition);
for(i= 0; i < Libisoburn_max_appended_partitionS; i++)
if((*o)->appended_partitions[i] != NULL)
free((*o)->appended_partitions[i]);
@ -1513,6 +1535,56 @@ int isoburn_igopt_get_tail_blocks(struct isoburn_imgen_opts *opts,
}
int isoburn_igopt_set_prep_partition(struct isoburn_imgen_opts *o,
char *path, int flag)
{
if(o->prep_partition != NULL)
free(o->prep_partition);
o->prep_partition= NULL;
if(path != NULL) {
o->prep_partition= strdup(path);
if(o->prep_partition == NULL) {
isoburn_report_iso_error(ISO_OUT_OF_MEM, "Out of memory", 0, "FATAL", 0);
return(-1);
}
}
return(1);
}
int isoburn_igopt_get_prep_partition(struct isoburn_imgen_opts *opts,
char **path, int flag)
{
*path= opts->prep_partition;
return(1);
}
int isoburn_igopt_set_efi_bootp(struct isoburn_imgen_opts *o,
char *path, int flag)
{
if(o->efi_boot_partition != NULL)
free(o->efi_boot_partition);
o->efi_boot_partition= NULL;
if(path != NULL) {
o->efi_boot_partition= strdup(path);
if(o->efi_boot_partition == NULL) {
isoburn_report_iso_error(ISO_OUT_OF_MEM, "Out of memory", 0, "FATAL", 0);
return(-1);
}
}
return(1);
}
int isoburn_igopt_get_efi_bootp(struct isoburn_imgen_opts *opts,
char **path, int flag)
{
*path= opts->efi_boot_partition;
return(1);
}
int isoburn_igopt_set_partition_img(struct isoburn_imgen_opts *opts,
int partition_number, uint8_t partition_type,
char *image_path)

View File

@ -664,6 +664,10 @@ struct isoburn_imgen_opts {
*/
uint32_t tail_blocks;
/* Disk file paths of content of PreP partition and EFI system partition */
char *prep_partition;
char *efi_boot_partition;
/* Eventual disk file paths of prepared images which shall be appended
after the ISO image and described by partiton table entries in a MBR.
*/

View File

@ -1644,6 +1644,40 @@ int isoburn_igopt_get_tail_blocks(struct isoburn_imgen_opts *opts,
uint32_t *num_blocks);
/** Copy a data file from the local filesystem into the emerging ISO image.
Mark it by an MBR partition entry as PreP partition and also cause
protective MBR partition entries before and after this partition.
See libisofs.h iso_write_opts_set_prep_img().
@since 1.2.4
@param opts
The option set to be manipulated.
@param path
File address in the local file system.
@param flag
Reserved for future usage, set to 0.
@return 1 success, <=0 failure
*/
int isoburn_igopt_set_prep_partition(struct isoburn_imgen_opts *opts,
char *path, int flag);
int isoburn_igopt_get_prep_partition(struct isoburn_imgen_opts *opts,
char **path, int flag);
/** Copy a data file from the local filesystem into the emerging ISO image.
@since 1.2.4
@param opts
The option set to be manipulated.
@param path
File address in the local file system.
@param flag
Reserved for future usage, set to 0.
@return 1 success, <=0 failure
*/
int isoburn_igopt_set_efi_bootp(struct isoburn_imgen_opts *opts,
char *path, int flag);
int isoburn_igopt_get_efi_bootp(struct isoburn_imgen_opts *opts,
char **path, int flag);
/** Cause an arbitrary data file to be appended to the ISO image and to be
described by a partition table entry in an MBR or SUN Disk Label at the
start of the ISO image.

View File

@ -29,6 +29,7 @@ isoburn_igopt_detach_jte;
isoburn_igopt_get_data_start;
isoburn_igopt_get_disc_label;
isoburn_igopt_get_effective_lba;
isoburn_igopt_get_efi_bootp;
isoburn_igopt_get_extensions;
isoburn_igopt_get_fifo_size;
isoburn_igopt_get_hfsp_serial_number;
@ -37,6 +38,7 @@ isoburn_igopt_get_out_charset;
isoburn_igopt_get_over_mode;
isoburn_igopt_get_over_ugid;
isoburn_igopt_get_partition_img;
isoburn_igopt_get_prep_partition;
isoburn_igopt_get_pvd_times;
isoburn_igopt_get_relaxed;
isoburn_igopt_get_rr_reloc;
@ -47,6 +49,7 @@ isoburn_igopt_get_tail_blocks;
isoburn_igopt_get_untranslated_name_len;
isoburn_igopt_new;
isoburn_igopt_set_disc_label;
isoburn_igopt_set_efi_bootp;
isoburn_igopt_set_extensions;
isoburn_igopt_set_fifo_size;
isoburn_igopt_set_hfsp_serial_number;
@ -55,6 +58,7 @@ isoburn_igopt_set_out_charset;
isoburn_igopt_set_over_mode;
isoburn_igopt_set_over_ugid;
isoburn_igopt_set_partition_img;
isoburn_igopt_set_prep_partition;
isoburn_igopt_set_pvd_times;
isoburn_igopt_set_relaxed;
isoburn_igopt_set_rr_reloc;

View File

@ -1 +1 @@
#define Xorriso_timestamP "2012.06.10.184210"
#define Xorriso_timestamP "2012.06.12.113220"