New API calls isoburn_ropt_set_displacement(), isoburn_ropt_get_displacement()

This commit is contained in:
2010-11-30 09:39:44 +00:00
parent 82bff299ec
commit 668e58761b
7 changed files with 119 additions and 30 deletions

View File

@@ -196,13 +196,32 @@ create_blank_image:;
goto create_blank_image;
}
if(read_opts->displacement != 0 && abs(read_opts->displacement_sign) == 1) {
/* Apply reverse displacement to session start */
if(read_opts->displacement_sign == -1) {
if(ms_block+ read_opts->displacement < ms_block) {
displacement_rollover:;
isoburn_msgs_submit(o, 0x00060000, msg, 0, "FAILURE", 0);
return 0;
}
ms_block+= read_opts->displacement;
} else {
if(ms_block < read_opts->displacement)
goto displacement_rollover;
ms_block-= read_opts->displacement;
}
}
/* create the data source */
ret = iso_read_opts_new(&ropts, 0);
if (ret < 0) {
isoburn_report_iso_error(ret, "Cannot create write opts", 0, "FATAL", 0);
return ret;
}
/* Important: do not return until iso_read_opts_free() */
iso_read_opts_set_start_block(ropts, ms_block);
iso_read_opts_set_no_rockridge(ropts, read_opts->norock);
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
@@ -221,7 +240,13 @@ create_blank_image:;
iso_read_opts_auto_input_charset(ropts, read_opts->auto_input_charset);
iso_read_opts_load_system_area(ropts, 1);
ds = isoburn_data_source_new(d);
ds = isoburn_data_source_new(d, read_opts->displacement,
read_opts->displacement_sign);
if (ds == NULL) {
isoburn_report_iso_error(ret, "Cannot create IsoDataSource object", 0,
"FATAL", 0);
return ret;
}
if(o->iso_data_source!=NULL)
iso_data_source_unref(o->iso_data_source);
o->iso_data_source= ds;