New boot_image boot specs partition_offset, partition_hd_cyl, partition_sec_hd

This commit is contained in:
2010-09-05 11:37:45 +00:00
parent 687f5b8658
commit 3051cc81d3
9 changed files with 183 additions and 39 deletions

View File

@ -308,6 +308,15 @@ do_set:;
0, "FAILURE", 1);
{ret= 0; goto ex;}
}
ret= isoburn_igopt_set_part_offset(sopts, xorriso->partition_offset,
xorriso->partition_secs_per_head,
xorriso->partition_heads_per_cyl);
if(ret != ISO_SUCCESS) {
Xorriso_process_msg_queues(xorriso,0);
Xorriso_report_iso_error(xorriso, "", ret,
"Error when setting partition offset", 0, "FAILURE", 1);
{ret= 0; goto ex;}
}
ret= 1;
ex:;
if(fp != NULL && fp != stdin)
@ -522,6 +531,18 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
"on attempt to write", 2);
if(ret<=0)
return(0);
/* <<< TWINTREE: preliminary */
if(xorriso->partition_offset > 0) {
s= isoburn_disc_get_status(drive);
if(s != BURN_DISC_BLANK) {
sprintf(xorriso->info_text,
"Output drive not blank with non-zero partition offset");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
{ret= 0; goto ex;}
}
}
if(xorriso->out_drive_handle == xorriso->in_drive_handle) {
source_drive= drive;
} else {
@ -680,6 +701,11 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
((!!(xorriso->do_md5 & 8)) * isoburn_igopt_file_stability);
if(xorriso->no_emul_toc & 1)
ext|= isoburn_igopt_no_emul_toc;
/* <<< TWINTREE: preliminary */
if(xorriso->partition_offset > 0)
ext|= isoburn_igopt_no_emul_toc;
isoburn_igopt_set_extensions(sopts, ext);
isoburn_igopt_set_relaxed(sopts, relax);
isoburn_igopt_set_sort_files(sopts, 1);