Reporting some relaxation commands with -report_el_torito modes "cmd" and "mkisofs" if CHRP is detected. Performing them with -boot_image any "replay".

This commit is contained in:
2022-10-07 11:55:10 +02:00
parent e594ba293a
commit 82dc9b6b42
6 changed files with 136 additions and 39 deletions

View File

@@ -240,6 +240,8 @@ ex:;
}
/* @param flag bit0= no info message "Loading ISO image tree"
*/
int Xorriso_make_read_options(struct XorrisO *xorriso,
struct burn_drive *drive,
struct isoburn_read_opts **ropts,
@@ -311,7 +313,7 @@ int Xorriso_make_read_options(struct XorrisO *xorriso,
state= isoburn_disc_get_status(drive);
if(state != BURN_DISC_BLANK) {
ret= isoburn_disc_get_msc1(drive, &load_lba);
if(ret > 0) {
if(ret > 0 && !(flag & 1)) {
sprintf(xorriso->info_text,
"Loading ISO image tree from LBA %d", load_lba);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
@@ -3865,6 +3867,8 @@ int Xorriso_feature_to_cmd(struct XorrisO *xorriso, char *name, char *value,
}
/* @param flag bit0= do not print xorriso->result_line, but accumulate it
*/
int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
int flag)
{
@@ -3876,11 +3880,16 @@ int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
IsoReadImageFeatures *features= NULL;
struct isoburn_imgen_opts *imgen_opts= NULL;
char *ftext= NULL, *cpt, *npt, *ept, *prev_line= NULL, *cmd_line= NULL;
char *result_acc= NULL;
static char *tree_loaded_names[3]= {"ISO9660", "Joliet", "ISO9660:1999"};
int tree_loaded_names_max= 2;
Xorriso_alloc_meM(prev_line, char, max_line_size);
Xorriso_alloc_meM(cmd_line, char, max_line_size);
if(flag & 1) {
Xorriso_alloc_meM(result_acc, char, 10 * SfileadrL);
result_acc[0]= 0;
}
prev_line[0]= 0;
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
"when assessing written features", 0);
@@ -3892,7 +3901,7 @@ int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
"The disc in the input drive offers no readable content", 0, "NOTE", 0);
ret= 2; goto ex;
}
ret= Xorriso_make_read_options(xorriso, drive, &ropts, 0);
ret= Xorriso_make_read_options(xorriso, drive, &ropts, 1);
if(ret <= 0)
goto ex;
ret = isoburn_assess_written_features(drive, ropts, &features, &imgen_opts,
@@ -3962,7 +3971,12 @@ int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
replay_count++;
} else {
strcat(xorriso->result_line, "\n");
Xorriso_result(xorriso, 0);
if(flag & 1) {
if(strlen(result_acc) + strlen(xorriso->result_line) < 10 * SfileadrL)
strcat(result_acc, xorriso->result_line);
} else {
Xorriso_result(xorriso, 0);
}
}
}
@@ -3972,6 +3986,8 @@ int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
replay_count);
Xorriso_info(xorriso, 0);
}
if(flag & 1)
strcpy(xorriso->result_line, result_acc);
ret= 1;
ex:;
Xorriso_process_msg_queues(xorriso,0);
@@ -3982,6 +3998,7 @@ ex:;
if(imgen_opts != NULL)
isoburn_igopt_destroy(&imgen_opts, 0);
Xorriso_free_meM(ftext);
Xorriso_free_meM(result_acc);
Xorriso_free_meM(cmd_line);
Xorriso_free_meM(prev_line);
return(ret);