New option -error_behavior with a first occasion image_loading
This commit is contained in:
@ -506,7 +506,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
enum burn_disc_status state;
|
||||
IsoImage *volset = NULL;
|
||||
struct isoburn_read_opts *ropts= NULL;
|
||||
char adr_data[SfileadrL], *libburn_adr, *boot_fate;
|
||||
char adr_data[SfileadrL], *libburn_adr, *boot_fate, *sev;
|
||||
|
||||
if((flag&3)==0) {
|
||||
sprintf(xorriso->info_text,
|
||||
@ -625,11 +625,32 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
Xorriso_set_image_severities(xorriso, 1); /* No DEBUG messages */
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
isoburn_set_read_pacifier(drive, Xorriso__read_pacifier, (void *) xorriso);
|
||||
if(isoburn_read_image(drive, ropts, &volset) <= 0) {
|
||||
|
||||
/* <<< Trying to work around too much tolerance on bad image trees.
|
||||
Better would be a chance to instruct libisofs what to do in
|
||||
case of image read errors. There is a risk to mistake other SORRYs.
|
||||
*/
|
||||
if(xorriso->img_read_error_mode>0)
|
||||
iso_set_abort_severity("SORRY");
|
||||
|
||||
ret= isoburn_read_image(drive, ropts, &volset);
|
||||
|
||||
/* <<< Resetting to normal thresholds */
|
||||
if(xorriso->img_read_error_mode>0)
|
||||
Xorriso_set_abort_severity(xorriso, 0);
|
||||
|
||||
if(ret<=0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_set_image_severities(xorriso, 0);
|
||||
sprintf(xorriso->info_text,"Cannot read ISO image volset");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
Xorriso_give_up_drive(xorriso, 1);
|
||||
sprintf(xorriso->info_text,"Cannot read ISO image tree");
|
||||
sev= "FAILURE";
|
||||
if(xorriso->img_read_error_mode==2)
|
||||
sev= "FATAL";
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, sev, 0);
|
||||
if(xorriso->img_read_error_mode!=0)
|
||||
Xorriso_msgs_submit(xorriso, 0, "You might get a partial or altered ISO image tree by option -error_behavior 'image_loading' 'best_effort'",
|
||||
0, "HINT", 0);
|
||||
ret= 3; goto ex;
|
||||
}
|
||||
Xorriso_pacifier_callback(xorriso, "nodes read", xorriso->pacifier_count, 0,
|
||||
@ -4397,21 +4418,23 @@ int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag)
|
||||
/* @param flag bit0=prepare for a burn run */
|
||||
int Xorriso_set_abort_severity(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret;
|
||||
int ret, abort_on_number;
|
||||
char *sev_text;
|
||||
static int note_number= -1, failure_number= -1;
|
||||
|
||||
/* ??? <<< On MISHAP use FAILURE as abort severity known to libisofs.
|
||||
On ERRFILE use NEVER.
|
||||
The pacifier loop will care for canceling libburn on MISHAP
|
||||
and thus also cancel the image generation.
|
||||
with libisofs-0.6.4 this should not be necessary
|
||||
Shall it be uphold anyway ?
|
||||
*/
|
||||
if((flag&1) && strcmp(xorriso->abort_on_text, "MISHAP")==0)
|
||||
ret= iso_set_abort_severity("FAILURE");
|
||||
else if((flag&1) && strcmp(xorriso->abort_on_text, "ERRFILE")==0)
|
||||
ret= iso_set_abort_severity("NEVER");
|
||||
else
|
||||
ret= iso_set_abort_severity(xorriso->abort_on_text);
|
||||
if(note_number==-1)
|
||||
Xorriso__text_to_sev("NOTE", ¬e_number, 0);
|
||||
if(failure_number==-1)
|
||||
Xorriso__text_to_sev("FAILURE", &failure_number, 0);
|
||||
sev_text= xorriso->abort_on_text;
|
||||
ret= Xorriso__text_to_sev(xorriso->abort_on_text, &abort_on_number, 0);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
if(abort_on_number<note_number)
|
||||
sev_text= "NOTE";
|
||||
else if(abort_on_number>failure_number)
|
||||
sev_text= "FAILURE";
|
||||
ret= iso_set_abort_severity(sev_text);
|
||||
return(ret>=0);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user