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:
@ -1703,7 +1703,8 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso,
|
||||
int was_force_bootable= 0, have_mbr_force_bootable= 0;
|
||||
uint64_t gpt_bheader_block= 0, start_block, num_blocks;
|
||||
uint64_t img_blocks= 0, iso_part_blocks;
|
||||
char *cpt;
|
||||
char *cpt, *npt, *ftext;
|
||||
int ftext_l, l;
|
||||
unsigned char bin_data[8];
|
||||
uint64_t gpt_part_flags;
|
||||
int was_gpt_iso_bootable= 0, was_gpt_iso_not_ro= 0, bin_count;
|
||||
@ -2086,6 +2087,61 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso,
|
||||
sprintf(buf, "-chrp-boot-part ");
|
||||
else
|
||||
sprintf(buf, "-boot_image any chrp_boot_part=on ");
|
||||
Xorriso_record_cmd_linE
|
||||
buf[0]= 0;
|
||||
ret= Xorriso_assess_written_features(xorriso,
|
||||
mkisofs ? "as_mkisofs" : "cmd", 1);
|
||||
if(ret > 0) {
|
||||
ftext= xorriso->result_line;
|
||||
ftext_l= strlen(ftext);
|
||||
for(cpt= ftext ; cpt - ftext < ftext_l ; cpt+= l + 1) {
|
||||
npt= strchr(cpt, '\n');
|
||||
if(npt == NULL)
|
||||
l= strlen(cpt);
|
||||
else
|
||||
l= npt - cpt;
|
||||
cpt[l]= 0;
|
||||
/* Only forward relaxations of ISO 9660 defaults, plus no RR */
|
||||
if(mkisofs) {
|
||||
if(strcmp(cpt, "-iso-level 2") != 0 &&
|
||||
strcmp(cpt, "-iso-level 3") != 0 &&
|
||||
strcmp(cpt, "--norock") != 0 &&
|
||||
strncmp(cpt, "-untranslated_name_len", 22) != 0 &&
|
||||
strcmp(cpt, "-N") != 0 &&
|
||||
strcmp(cpt, "-D") != 0 &&
|
||||
strcmp(cpt, "-U") != 0 &&
|
||||
strcmp(cpt, "-max-iso9660-filenames") != 0 &&
|
||||
strcmp(cpt, "-d") != 0 &&
|
||||
strcmp(cpt, "-allow-lowercase") != 0)
|
||||
continue;
|
||||
} else {
|
||||
/* (Do not forward iso_9660_level because 3 is default and the
|
||||
user possibly had reasons to lower it) */
|
||||
if(strcmp(cpt, "-rockridge off") != 0 &&
|
||||
strncmp(cpt, "-compliance untranslated_name_len=", 34) != 0 &&
|
||||
strcmp(cpt, "-compliance omit_version_off:only_iso_version")
|
||||
!= 0 &&
|
||||
strcmp(cpt, "-compliance omit_version:only_iso_version_off")
|
||||
!= 0 &&
|
||||
strcmp(cpt, "-compliance deep_paths") != 0 &&
|
||||
strcmp(cpt, "-compliance long_paths") != 0 &&
|
||||
strcmp(cpt, "-compliance full_ascii") != 0 &&
|
||||
strcmp(cpt, "-compliance long_names") != 0 &&
|
||||
strncmp(cpt, "-compliance no_force_dots:", 26) != 0 &&
|
||||
strcmp(cpt, "-compliance lowercase") != 0)
|
||||
continue;
|
||||
if(strcmp(cpt, "-compliance untranslated_name_len=0") == 0)
|
||||
continue;
|
||||
}
|
||||
if(strncmp(cpt, "-compliance untranslated_name_len=", 34) == 0) {
|
||||
/* Better allow the maximum if it is reported as non-0 */
|
||||
strcpy(buf, "-compliance untranslated_name_len=96");
|
||||
} else {
|
||||
strcpy(buf, cpt);
|
||||
}
|
||||
Xorriso_record_cmd_linE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if(strcmp(name, "System area summary:") == 0) {
|
||||
|
Reference in New Issue
Block a user