|
|
|
@ -741,15 +741,171 @@ int Xorriso_retry_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Xorriso_make_iso_write_opts(struct XorrisO *xorriso, IsoImage *image,
|
|
|
|
|
struct isoburn_imgen_opts *sopts, int flag)
|
|
|
|
|
{
|
|
|
|
|
int ext, i, ret, pad_by_libisofs= 0, is_bootable= 0, relax;
|
|
|
|
|
char *out_cs, *part_image;
|
|
|
|
|
IsoNode *root_node;
|
|
|
|
|
uint32_t padding;
|
|
|
|
|
|
|
|
|
|
relax= xorriso->relax_compliance;
|
|
|
|
|
if(image != NULL)
|
|
|
|
|
is_bootable= iso_image_get_boot_image(image, NULL, NULL, NULL);
|
|
|
|
|
if(xorriso->patch_isolinux_image & 1) {
|
|
|
|
|
if(is_bootable == 1)
|
|
|
|
|
relax|= isoburn_igopt_allow_full_ascii;
|
|
|
|
|
else if(xorriso->keep_boot_image && is_bootable == 1)
|
|
|
|
|
relax|= isoburn_igopt_allow_full_ascii;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
out_cs= xorriso->out_charset;
|
|
|
|
|
if(out_cs == NULL)
|
|
|
|
|
Xorriso_get_local_charset(xorriso, &out_cs, 0);
|
|
|
|
|
|
|
|
|
|
isoburn_igopt_set_level(sopts, xorriso->iso_level);
|
|
|
|
|
ext= ((!!xorriso->do_rockridge) * isoburn_igopt_rockridge) |
|
|
|
|
|
((!!xorriso->do_joliet) * isoburn_igopt_joliet) |
|
|
|
|
|
((!!xorriso->do_hfsplus) * isoburn_igopt_hfsplus) |
|
|
|
|
|
((!!xorriso->do_fat) * isoburn_igopt_fat) |
|
|
|
|
|
((!!xorriso->do_iso1999) * isoburn_igopt_iso1999) |
|
|
|
|
|
(( !(xorriso->ino_behavior & 2)) * isoburn_igopt_hardlinks) |
|
|
|
|
|
(( (!(xorriso->ino_behavior & 2)) ||
|
|
|
|
|
(xorriso->do_aaip & (2 | 8 | 16 | 256)) ||
|
|
|
|
|
(xorriso->do_md5 & (2 | 4)) ||
|
|
|
|
|
xorriso->do_hfsplus
|
|
|
|
|
) * isoburn_igopt_aaip) |
|
|
|
|
|
((!!(xorriso->do_md5 & 2)) * isoburn_igopt_session_md5) |
|
|
|
|
|
((!!(xorriso->do_md5 & 4)) * isoburn_igopt_file_md5) |
|
|
|
|
|
((!!(xorriso->do_md5 & 8)) * isoburn_igopt_file_stability) |
|
|
|
|
|
((!!xorriso->do_old_empty) * isoburn_igopt_old_empty) |
|
|
|
|
|
((flag & 1) * isoburn_igopt_will_cancel);
|
|
|
|
|
if(xorriso->no_emul_toc & 1)
|
|
|
|
|
ext|= isoburn_igopt_no_emul_toc;
|
|
|
|
|
isoburn_igopt_set_extensions(sopts, ext);
|
|
|
|
|
isoburn_igopt_set_relaxed(sopts, relax);
|
|
|
|
|
ret = isoburn_igopt_set_rr_reloc(sopts, xorriso->rr_reloc_dir,
|
|
|
|
|
xorriso->rr_reloc_flags);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
ret= isoburn_igopt_set_untranslated_name_len(sopts,
|
|
|
|
|
xorriso->untranslated_name_len);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
isoburn_igopt_set_sort_files(sopts, 1);
|
|
|
|
|
isoburn_igopt_set_over_mode(sopts, 0, 0, (mode_t) 0, (mode_t) 0);
|
|
|
|
|
isoburn_igopt_set_over_ugid(sopts, 2 * !!xorriso->do_global_uid,
|
|
|
|
|
2 * !!xorriso->do_global_gid,
|
|
|
|
|
(uid_t) xorriso->global_uid,
|
|
|
|
|
(gid_t) xorriso->global_gid);
|
|
|
|
|
isoburn_igopt_set_out_charset(sopts, out_cs);
|
|
|
|
|
isoburn_igopt_set_fifo_size(sopts, xorriso->fs * 2048);
|
|
|
|
|
Ftimetxt(time(NULL), xorriso->scdbackup_tag_time, 8);
|
|
|
|
|
isoburn_igopt_set_scdbackup_tag(sopts, xorriso->scdbackup_tag_name,
|
|
|
|
|
xorriso->scdbackup_tag_time,
|
|
|
|
|
xorriso->scdbackup_tag_written);
|
|
|
|
|
if(xorriso->prep_partition[0]) {
|
|
|
|
|
ret= isoburn_igopt_set_prep_partition(sopts, xorriso->prep_partition, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
}
|
|
|
|
|
if(xorriso->efi_boot_partition[0]) {
|
|
|
|
|
ret= isoburn_igopt_set_efi_bootp(sopts, xorriso->efi_boot_partition, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
}
|
|
|
|
|
for(i= 0; i < Xorriso_max_appended_partitionS; i++) {
|
|
|
|
|
if(xorriso->appended_partitions[i] == NULL)
|
|
|
|
|
continue;
|
|
|
|
|
if(xorriso->appended_partitions[i][0] == 0)
|
|
|
|
|
continue;
|
|
|
|
|
if(strcmp(xorriso->appended_partitions[i], ".") == 0)
|
|
|
|
|
part_image= "";
|
|
|
|
|
else
|
|
|
|
|
part_image= xorriso->appended_partitions[i];
|
|
|
|
|
isoburn_igopt_set_partition_img(sopts, i + 1,
|
|
|
|
|
xorriso->appended_part_types[i], part_image);
|
|
|
|
|
}
|
|
|
|
|
isoburn_igopt_set_disc_label(sopts, xorriso->ascii_disc_label);
|
|
|
|
|
isoburn_igopt_set_hfsp_serial_number(sopts, xorriso->hfsp_serial_number);
|
|
|
|
|
isoburn_igopt_set_hfsp_block_size(sopts, xorriso->hfsp_block_size,
|
|
|
|
|
xorriso->apm_block_size);
|
|
|
|
|
isoburn_igopt_set_pvd_times(sopts,
|
|
|
|
|
xorriso->vol_creation_time, xorriso->vol_modification_time,
|
|
|
|
|
xorriso->vol_expiration_time, xorriso->vol_effective_time,
|
|
|
|
|
xorriso->vol_uuid);
|
|
|
|
|
|
|
|
|
|
#ifdef Xorriso_with_libjtE
|
|
|
|
|
if(xorriso->libjte_handle && (xorriso->libjte_params_given & (4 | 8))) {
|
|
|
|
|
|
|
|
|
|
/* >>> Check whether the mandatory parameters are set */;
|
|
|
|
|
|
|
|
|
|
ret= libjte_set_outfile(xorriso->libjte_handle, xorriso->outdev);
|
|
|
|
|
Xorriso_process_msg_queues(xorriso, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
isoburn_igopt_attach_jte(sopts, xorriso->libjte_handle);
|
|
|
|
|
pad_by_libisofs= 1;
|
|
|
|
|
}
|
|
|
|
|
#endif /* Xorriso_with_libjtE */
|
|
|
|
|
|
|
|
|
|
if(xorriso->do_padding_by_libisofs || pad_by_libisofs) {
|
|
|
|
|
/* Padding to be done by libisofs, not by libburn.
|
|
|
|
|
*/
|
|
|
|
|
padding= xorriso->padding / 2048;
|
|
|
|
|
if((uint32_t) xorriso->padding > padding * 2048)
|
|
|
|
|
padding++;
|
|
|
|
|
/*
|
|
|
|
|
fprintf(stderr, "XORRISO_DEBUG: isoburn_igopt_set_tail_blocks(%d)\n",
|
|
|
|
|
(int) padding);
|
|
|
|
|
*/
|
|
|
|
|
isoburn_igopt_set_tail_blocks(sopts, padding);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Make final abort check before starting expensive activities */
|
|
|
|
|
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
|
|
|
|
if(ret<0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
|
|
|
|
|
if(xorriso->zisofs_by_magic && image != NULL) {
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
|
"Checking disk file content for zisofs compression headers.");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
|
|
|
|
root_node= (IsoNode *) iso_image_get_root(image);
|
|
|
|
|
ret= iso_node_zf_by_magic(root_node,
|
|
|
|
|
(xorriso->out_drive_handle == xorriso->in_drive_handle) | 2 | 16);
|
|
|
|
|
if(ret<0) {
|
|
|
|
|
Xorriso_report_iso_error(xorriso, "", ret,
|
|
|
|
|
"Error when examining file content for zisofs headers",
|
|
|
|
|
0, "FAILURE", 1);
|
|
|
|
|
}
|
|
|
|
|
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
|
|
|
|
if(ret<0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
|
"Check for zisofs compression headers done.");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret = isoburn_igopt_set_write_type(sopts, xorriso->do_tao);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
|
|
|
|
|
ret= 1;
|
|
|
|
|
ex:;
|
|
|
|
|
return(ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* @param flag bit0= do not write but only prepare and return size in sectors
|
|
|
|
|
@return <=0 error , 1= success
|
|
|
|
|
2= failure with DVD-RW, please call Xorriso_retry_write_session()
|
|
|
|
|
*/
|
|
|
|
|
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
{
|
|
|
|
|
int ret, relax= 0, i, pacifier_speed= 0, data_lba, ext, is_bootable= 0;
|
|
|
|
|
int freshly_bootable= 0, hide_attr, pad_by_libisofs= 0, signal_mode, role;
|
|
|
|
|
char *xorriso_id= NULL, *img_id, *sfe= NULL, *out_cs, *part_image;
|
|
|
|
|
int ret, i, pacifier_speed= 0, data_lba, is_bootable= 0;
|
|
|
|
|
int freshly_bootable= 0, hide_attr, signal_mode, role;
|
|
|
|
|
char *xorriso_id= NULL, *img_id, *sfe= NULL, *out_cs;
|
|
|
|
|
struct isoburn_imgen_opts *sopts= NULL;
|
|
|
|
|
struct burn_drive_info *dinfo, *source_dinfo;
|
|
|
|
|
struct burn_drive *drive, *source_drive;
|
|
|
|
@ -762,11 +918,9 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
enum burn_disc_status s;
|
|
|
|
|
struct burn_multi_caps *caps= NULL;
|
|
|
|
|
IsoImage *image= NULL;
|
|
|
|
|
IsoNode *root_node;
|
|
|
|
|
int profile_number;
|
|
|
|
|
char *profile_name= NULL, *reasons= NULL;
|
|
|
|
|
IsoBoot *bootcat_node;
|
|
|
|
|
uint32_t padding;
|
|
|
|
|
|
|
|
|
|
Xorriso_alloc_meM(sfe, char, 5 * SfileadrL);
|
|
|
|
|
Xorriso_alloc_meM(xorriso_id, char, 256);
|
|
|
|
@ -849,7 +1003,6 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
Xorriso_process_msg_queues(xorriso, 0);
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
relax= xorriso->relax_compliance;
|
|
|
|
|
|
|
|
|
|
xorriso->alignment= 0;
|
|
|
|
|
image= isoburn_get_attached_image(source_drive);
|
|
|
|
@ -876,6 +1029,19 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(image!=NULL && 12+strlen(Xorriso_timestamP)<80) {
|
|
|
|
|
strcpy(xorriso_id, xorriso->preparer_id);
|
|
|
|
|
img_id= (char *) iso_image_get_data_preparer_id(image);
|
|
|
|
|
if(img_id!=NULL) {
|
|
|
|
|
for(i= strlen(img_id)-1; i>=0 && img_id[i]==' '; i--);
|
|
|
|
|
if(i>0) {
|
|
|
|
|
sprintf(xorriso->info_text, "Overwrote previous preparer id '%s'",
|
|
|
|
|
img_id);
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
iso_image_set_data_preparer_id(image, xorriso_id);
|
|
|
|
|
}
|
|
|
|
|
ret= Xorriso_set_system_area(xorriso, source_drive, image, sopts, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
@ -914,7 +1080,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
iso_image_set_boot_catalog_hidden(image, hide_attr);
|
|
|
|
|
} else if(xorriso->patch_isolinux_image & 1) {
|
|
|
|
|
if(is_bootable == 1) {
|
|
|
|
|
relax|= isoburn_igopt_allow_full_ascii;
|
|
|
|
|
/* will imply isoburn_igopt_allow_full_ascii */
|
|
|
|
|
sprintf(xorriso->info_text, "Patching boot info table");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
|
|
|
|
|
|
|
@ -943,7 +1109,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
|
|
|
|
}
|
|
|
|
|
} else if(xorriso->keep_boot_image && is_bootable == 1) {
|
|
|
|
|
relax|= isoburn_igopt_allow_full_ascii;
|
|
|
|
|
/* will imply isoburn_igopt_allow_full_ascii */
|
|
|
|
|
sprintf(xorriso->info_text, "Keeping boot image unchanged");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
|
|
|
} else if(is_bootable == 1) {
|
|
|
|
@ -965,143 +1131,9 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|
|
|
|
&value_length, &value, 2 | 8);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isoburn_igopt_set_level(sopts, xorriso->iso_level);
|
|
|
|
|
ext= ((!!xorriso->do_rockridge) * isoburn_igopt_rockridge) |
|
|
|
|
|
((!!xorriso->do_joliet) * isoburn_igopt_joliet) |
|
|
|
|
|
((!!xorriso->do_hfsplus) * isoburn_igopt_hfsplus) |
|
|
|
|
|
((!!xorriso->do_fat) * isoburn_igopt_fat) |
|
|
|
|
|
((!!xorriso->do_iso1999) * isoburn_igopt_iso1999) |
|
|
|
|
|
(( !(xorriso->ino_behavior & 2)) * isoburn_igopt_hardlinks) |
|
|
|
|
|
(( (!(xorriso->ino_behavior & 2)) ||
|
|
|
|
|
(xorriso->do_aaip & (2 | 8 | 16 | 256)) ||
|
|
|
|
|
(xorriso->do_md5 & (2 | 4)) ||
|
|
|
|
|
xorriso->do_hfsplus
|
|
|
|
|
) * isoburn_igopt_aaip) |
|
|
|
|
|
((!!(xorriso->do_md5 & 2)) * isoburn_igopt_session_md5) |
|
|
|
|
|
((!!(xorriso->do_md5 & 4)) * isoburn_igopt_file_md5) |
|
|
|
|
|
((!!(xorriso->do_md5 & 8)) * isoburn_igopt_file_stability) |
|
|
|
|
|
((!!xorriso->do_old_empty) * isoburn_igopt_old_empty) |
|
|
|
|
|
((flag & 1) * isoburn_igopt_will_cancel);
|
|
|
|
|
if(xorriso->no_emul_toc & 1)
|
|
|
|
|
ext|= isoburn_igopt_no_emul_toc;
|
|
|
|
|
isoburn_igopt_set_extensions(sopts, ext);
|
|
|
|
|
isoburn_igopt_set_relaxed(sopts, relax);
|
|
|
|
|
ret = isoburn_igopt_set_rr_reloc(sopts, xorriso->rr_reloc_dir,
|
|
|
|
|
xorriso->rr_reloc_flags);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
ret= isoburn_igopt_set_untranslated_name_len(sopts,
|
|
|
|
|
xorriso->untranslated_name_len);
|
|
|
|
|
ret= Xorriso_make_iso_write_opts(xorriso, image, sopts, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
isoburn_igopt_set_sort_files(sopts, 1);
|
|
|
|
|
isoburn_igopt_set_over_mode(sopts, 0, 0, (mode_t) 0, (mode_t) 0);
|
|
|
|
|
isoburn_igopt_set_over_ugid(sopts, 2 * !!xorriso->do_global_uid,
|
|
|
|
|
2 * !!xorriso->do_global_gid,
|
|
|
|
|
(uid_t) xorriso->global_uid,
|
|
|
|
|
(gid_t) xorriso->global_gid);
|
|
|
|
|
isoburn_igopt_set_out_charset(sopts, out_cs);
|
|
|
|
|
isoburn_igopt_set_fifo_size(sopts, xorriso->fs * 2048);
|
|
|
|
|
Ftimetxt(time(NULL), xorriso->scdbackup_tag_time, 8);
|
|
|
|
|
isoburn_igopt_set_scdbackup_tag(sopts, xorriso->scdbackup_tag_name,
|
|
|
|
|
xorriso->scdbackup_tag_time,
|
|
|
|
|
xorriso->scdbackup_tag_written);
|
|
|
|
|
if(xorriso->prep_partition[0]) {
|
|
|
|
|
ret= isoburn_igopt_set_prep_partition(sopts, xorriso->prep_partition, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
}
|
|
|
|
|
if(xorriso->efi_boot_partition[0]) {
|
|
|
|
|
ret= isoburn_igopt_set_efi_bootp(sopts, xorriso->efi_boot_partition, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
}
|
|
|
|
|
for(i= 0; i < Xorriso_max_appended_partitionS; i++) {
|
|
|
|
|
if(xorriso->appended_partitions[i] == NULL)
|
|
|
|
|
continue;
|
|
|
|
|
if(xorriso->appended_partitions[i][0] == 0)
|
|
|
|
|
continue;
|
|
|
|
|
if(strcmp(xorriso->appended_partitions[i], ".") == 0)
|
|
|
|
|
part_image= "";
|
|
|
|
|
else
|
|
|
|
|
part_image= xorriso->appended_partitions[i];
|
|
|
|
|
isoburn_igopt_set_partition_img(sopts, i + 1,
|
|
|
|
|
xorriso->appended_part_types[i], part_image);
|
|
|
|
|
}
|
|
|
|
|
isoburn_igopt_set_disc_label(sopts, xorriso->ascii_disc_label);
|
|
|
|
|
isoburn_igopt_set_hfsp_serial_number(sopts, xorriso->hfsp_serial_number);
|
|
|
|
|
isoburn_igopt_set_hfsp_block_size(sopts, xorriso->hfsp_block_size,
|
|
|
|
|
xorriso->apm_block_size);
|
|
|
|
|
|
|
|
|
|
if(image!=NULL && 12+strlen(Xorriso_timestamP)<80) {
|
|
|
|
|
strcpy(xorriso_id, xorriso->preparer_id);
|
|
|
|
|
img_id= (char *) iso_image_get_data_preparer_id(image);
|
|
|
|
|
if(img_id!=NULL) {
|
|
|
|
|
for(i= strlen(img_id)-1; i>=0 && img_id[i]==' '; i--);
|
|
|
|
|
if(i>0) {
|
|
|
|
|
sprintf(xorriso->info_text, "Overwrote previous preparer id '%s'",
|
|
|
|
|
img_id);
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
iso_image_set_data_preparer_id(image, xorriso_id);
|
|
|
|
|
}
|
|
|
|
|
isoburn_igopt_set_pvd_times(sopts,
|
|
|
|
|
xorriso->vol_creation_time, xorriso->vol_modification_time,
|
|
|
|
|
xorriso->vol_expiration_time, xorriso->vol_effective_time,
|
|
|
|
|
xorriso->vol_uuid);
|
|
|
|
|
|
|
|
|
|
#ifdef Xorriso_with_libjtE
|
|
|
|
|
if(xorriso->libjte_handle && (xorriso->libjte_params_given & (4 | 8))) {
|
|
|
|
|
|
|
|
|
|
/* >>> Check whether the mandatory parameters are set */;
|
|
|
|
|
|
|
|
|
|
ret= libjte_set_outfile(xorriso->libjte_handle, xorriso->outdev);
|
|
|
|
|
Xorriso_process_msg_queues(xorriso, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
isoburn_igopt_attach_jte(sopts, xorriso->libjte_handle);
|
|
|
|
|
pad_by_libisofs= 1;
|
|
|
|
|
}
|
|
|
|
|
#endif /* Xorriso_with_libjtE */
|
|
|
|
|
|
|
|
|
|
if(xorriso->do_padding_by_libisofs || pad_by_libisofs) {
|
|
|
|
|
/* Padding to be done by libisofs, not by libburn.
|
|
|
|
|
*/
|
|
|
|
|
padding= xorriso->padding / 2048;
|
|
|
|
|
if((uint32_t) xorriso->padding > padding * 2048)
|
|
|
|
|
padding++;
|
|
|
|
|
/*
|
|
|
|
|
fprintf(stderr, "XORRISO_DEBUG: isoburn_igopt_set_tail_blocks(%d)\n",
|
|
|
|
|
(int) padding);
|
|
|
|
|
*/
|
|
|
|
|
isoburn_igopt_set_tail_blocks(sopts, padding);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Make final abort check before starting expensive activities */
|
|
|
|
|
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
|
|
|
|
if(ret<0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
|
|
|
|
|
if(xorriso->zisofs_by_magic) {
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
|
"Checking disk file content for zisofs compression headers.");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
|
|
|
|
root_node= (IsoNode *) iso_image_get_root(image);
|
|
|
|
|
ret= iso_node_zf_by_magic(root_node,
|
|
|
|
|
(xorriso->out_drive_handle == xorriso->in_drive_handle) | 2 | 16);
|
|
|
|
|
if(ret<0) {
|
|
|
|
|
Xorriso_report_iso_error(xorriso, "", ret,
|
|
|
|
|
"Error when examining file content for zisofs headers",
|
|
|
|
|
0, "FAILURE", 1);
|
|
|
|
|
}
|
|
|
|
|
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
|
|
|
|
if(ret<0)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
|
"Check for zisofs compression headers done.");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
|
|
|
|
}
|
|
|
|
|
goto ex;
|
|
|
|
|
|
|
|
|
|
/* >>> omit iso_image_update_sizes if the image was filled up very quickly */;
|
|
|
|
|
|
|
|
|
@ -1118,10 +1150,6 @@ fprintf(stderr, "XORRISO_DEBUG: isoburn_igopt_set_tail_blocks(%d)\n",
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret = isoburn_igopt_set_write_type(sopts, xorriso->do_tao);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
|
|
|
|
|
Xorriso_set_abort_severity(xorriso, 1);
|
|
|
|
|
if (xorriso->grow_blindly_msc2 >= 0 &&
|
|
|
|
|
xorriso->out_drive_handle != xorriso->in_drive_handle) {
|
|
|
|
|