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:
parent
e594ba293a
commit
82dc9b6b42
@ -240,6 +240,8 @@ ex:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag bit0= no info message "Loading ISO image tree"
|
||||||
|
*/
|
||||||
int Xorriso_make_read_options(struct XorrisO *xorriso,
|
int Xorriso_make_read_options(struct XorrisO *xorriso,
|
||||||
struct burn_drive *drive,
|
struct burn_drive *drive,
|
||||||
struct isoburn_read_opts **ropts,
|
struct isoburn_read_opts **ropts,
|
||||||
@ -311,7 +313,7 @@ int Xorriso_make_read_options(struct XorrisO *xorriso,
|
|||||||
state= isoburn_disc_get_status(drive);
|
state= isoburn_disc_get_status(drive);
|
||||||
if(state != BURN_DISC_BLANK) {
|
if(state != BURN_DISC_BLANK) {
|
||||||
ret= isoburn_disc_get_msc1(drive, &load_lba);
|
ret= isoburn_disc_get_msc1(drive, &load_lba);
|
||||||
if(ret > 0) {
|
if(ret > 0 && !(flag & 1)) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Loading ISO image tree from LBA %d", load_lba);
|
"Loading ISO image tree from LBA %d", load_lba);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
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 Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
|
||||||
int flag)
|
int flag)
|
||||||
{
|
{
|
||||||
@ -3876,11 +3880,16 @@ int Xorriso_assess_written_features(struct XorrisO *xorriso, char *mode,
|
|||||||
IsoReadImageFeatures *features= NULL;
|
IsoReadImageFeatures *features= NULL;
|
||||||
struct isoburn_imgen_opts *imgen_opts= NULL;
|
struct isoburn_imgen_opts *imgen_opts= NULL;
|
||||||
char *ftext= NULL, *cpt, *npt, *ept, *prev_line= NULL, *cmd_line= 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"};
|
static char *tree_loaded_names[3]= {"ISO9660", "Joliet", "ISO9660:1999"};
|
||||||
int tree_loaded_names_max= 2;
|
int tree_loaded_names_max= 2;
|
||||||
|
|
||||||
Xorriso_alloc_meM(prev_line, char, max_line_size);
|
Xorriso_alloc_meM(prev_line, char, max_line_size);
|
||||||
Xorriso_alloc_meM(cmd_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;
|
prev_line[0]= 0;
|
||||||
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||||
"when assessing written features", 0);
|
"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);
|
"The disc in the input drive offers no readable content", 0, "NOTE", 0);
|
||||||
ret= 2; goto ex;
|
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)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
ret = isoburn_assess_written_features(drive, ropts, &features, &imgen_opts,
|
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++;
|
replay_count++;
|
||||||
} else {
|
} else {
|
||||||
strcat(xorriso->result_line, "\n");
|
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);
|
replay_count);
|
||||||
Xorriso_info(xorriso, 0);
|
Xorriso_info(xorriso, 0);
|
||||||
}
|
}
|
||||||
|
if(flag & 1)
|
||||||
|
strcpy(xorriso->result_line, result_acc);
|
||||||
ret= 1;
|
ret= 1;
|
||||||
ex:;
|
ex:;
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
@ -3982,6 +3998,7 @@ ex:;
|
|||||||
if(imgen_opts != NULL)
|
if(imgen_opts != NULL)
|
||||||
isoburn_igopt_destroy(&imgen_opts, 0);
|
isoburn_igopt_destroy(&imgen_opts, 0);
|
||||||
Xorriso_free_meM(ftext);
|
Xorriso_free_meM(ftext);
|
||||||
|
Xorriso_free_meM(result_acc);
|
||||||
Xorriso_free_meM(cmd_line);
|
Xorriso_free_meM(cmd_line);
|
||||||
Xorriso_free_meM(prev_line);
|
Xorriso_free_meM(prev_line);
|
||||||
return(ret);
|
return(ret);
|
||||||
|
@ -1703,7 +1703,8 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso,
|
|||||||
int was_force_bootable= 0, have_mbr_force_bootable= 0;
|
int was_force_bootable= 0, have_mbr_force_bootable= 0;
|
||||||
uint64_t gpt_bheader_block= 0, start_block, num_blocks;
|
uint64_t gpt_bheader_block= 0, start_block, num_blocks;
|
||||||
uint64_t img_blocks= 0, iso_part_blocks;
|
uint64_t img_blocks= 0, iso_part_blocks;
|
||||||
char *cpt;
|
char *cpt, *npt, *ftext;
|
||||||
|
int ftext_l, l;
|
||||||
unsigned char bin_data[8];
|
unsigned char bin_data[8];
|
||||||
uint64_t gpt_part_flags;
|
uint64_t gpt_part_flags;
|
||||||
int was_gpt_iso_bootable= 0, was_gpt_iso_not_ro= 0, bin_count;
|
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 ");
|
sprintf(buf, "-chrp-boot-part ");
|
||||||
else
|
else
|
||||||
sprintf(buf, "-boot_image any chrp_boot_part=on ");
|
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) {
|
} else if(strcmp(name, "System area summary:") == 0) {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
.\" First parameter, NAME, should be all caps
|
.\" First parameter, NAME, should be all caps
|
||||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
.\" other parameters are allowed: see man(7), man(1)
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
.TH XORRISO 1 "Version 1.5.5, Sep 18, 2022"
|
.TH XORRISO 1 "Version 1.5.5, Oct 06, 2022"
|
||||||
.\" Please adjust this date whenever revising the manpage.
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
.\"
|
.\"
|
||||||
.\" Some roff macros, for reference:
|
.\" Some roff macros, for reference:
|
||||||
@ -4586,6 +4586,14 @@ Mode \fBas_mkisofs\fR tries to print the \fBxorriso \-as mkisofs\fR
|
|||||||
options, which are necessary to produce the found equipment.
|
options, which are necessary to produce the found equipment.
|
||||||
The intended use case is to use the mounted filesystem as input tree
|
The intended use case is to use the mounted filesystem as input tree
|
||||||
together with the printed options.
|
together with the printed options.
|
||||||
|
.br
|
||||||
|
If CHRP equipment is detected, then modes \fBcmd\fR and \fBas_mkisofs\fR
|
||||||
|
issue some of the relaxation commands or options which get detected by
|
||||||
|
command \fB\-assess_indev_features\fR. This happens because CHRP firmware
|
||||||
|
reads file paths from file /ppc/bootinfo.txt and tries to find them
|
||||||
|
case\-insensitively in the ECMA\-119 tree without using Rock Ridge. If such a
|
||||||
|
path has actually forbidden properties, like the name "powerpc\-ieee1275", then
|
||||||
|
the relaxations are needed to bring it unmangled into the ECMA\-119 tree.
|
||||||
.TP
|
.TP
|
||||||
\fB\-report_system_area\fR mode
|
\fB\-report_system_area\fR mode
|
||||||
With mode \fBplain\fR print a report about the information found in
|
With mode \fBplain\fR print a report about the information found in
|
||||||
|
@ -3857,6 +3857,14 @@ File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Comm
|
|||||||
which are necessary to produce the found equipment. The intended
|
which are necessary to produce the found equipment. The intended
|
||||||
use case is to use the mounted filesystem as input tree together
|
use case is to use the mounted filesystem as input tree together
|
||||||
with the printed options.
|
with the printed options.
|
||||||
|
If CHRP equipment is detected, then modes *cmd* and *as_mkisofs*
|
||||||
|
issue some of the relaxation commands or options which get detected
|
||||||
|
by command *-assess_indev_features*. This happens because CHRP
|
||||||
|
firmware reads file paths from file /ppc/bootinfo.txt and tries to
|
||||||
|
find them case-insensitively in the ECMA-119 tree without using
|
||||||
|
Rock Ridge. If such a path has actually forbidden properties, like
|
||||||
|
the name "powerpc-ieee1275", then the relaxations are needed to
|
||||||
|
bring it unmangled into the ECMA-119 tree.
|
||||||
-report_system_area mode
|
-report_system_area mode
|
||||||
With mode *plain* print a report about the information found in the
|
With mode *plain* print a report about the information found in the
|
||||||
System Area of the loaded ISO image. The report consists of zero
|
System Area of the loaded ISO image. The report consists of zero
|
||||||
@ -5808,7 +5816,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -reassure enables confirmation question: DialogCtl. (line 29)
|
* -reassure enables confirmation question: DialogCtl. (line 29)
|
||||||
* -report_about controls verbosity: Exception. (line 53)
|
* -report_about controls verbosity: Exception. (line 53)
|
||||||
* -report_el_torito shows Boot Catalog: Inquiry. (line 150)
|
* -report_el_torito shows Boot Catalog: Inquiry. (line 150)
|
||||||
* -report_system_area shows MBR, GPT, and alike: Inquiry. (line 172)
|
* -report_system_area shows MBR, GPT, and alike: Inquiry. (line 180)
|
||||||
* -return_with controls exit value: Exception. (line 38)
|
* -return_with controls exit value: Exception. (line 38)
|
||||||
* -rm deletes files from ISO image: Manip. (line 20)
|
* -rm deletes files from ISO image: Manip. (line 20)
|
||||||
* -rmdir deletes ISO directory: Manip. (line 29)
|
* -rmdir deletes ISO directory: Manip. (line 29)
|
||||||
@ -6004,7 +6012,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
|||||||
* Image, set volume timestamp, -volume_date: SetWrite. (line 211)
|
* Image, set volume timestamp, -volume_date: SetWrite. (line 211)
|
||||||
* Image, show Boot Catalog: Inquiry. (line 150)
|
* Image, show Boot Catalog: Inquiry. (line 150)
|
||||||
* Image, show id strings, -pvd_info: Inquiry. (line 142)
|
* Image, show id strings, -pvd_info: Inquiry. (line 142)
|
||||||
* Image, show MBR, GPT, and alike, -pvd_info: Inquiry. (line 172)
|
* Image, show MBR, GPT, and alike, -pvd_info: Inquiry. (line 180)
|
||||||
* Image, _definition: Model. (line 9)
|
* Image, _definition: Model. (line 9)
|
||||||
* Input Character Set, _definition: Charset. (line 25)
|
* Input Character Set, _definition: Charset. (line 25)
|
||||||
* Insert, enable overwriting, -overwrite: SetInsert. (line 139)
|
* Insert, enable overwriting, -overwrite: SetInsert. (line 139)
|
||||||
@ -6223,35 +6231,35 @@ Node: Charset189084
|
|||||||
Node: Exception192413
|
Node: Exception192413
|
||||||
Node: DialogCtl198542
|
Node: DialogCtl198542
|
||||||
Node: Inquiry201144
|
Node: Inquiry201144
|
||||||
Node: Navigate211859
|
Node: Navigate212402
|
||||||
Node: Verify220566
|
Node: Verify221109
|
||||||
Node: Restore231715
|
Node: Restore232258
|
||||||
Node: Emulation243923
|
Node: Emulation244466
|
||||||
Node: Scripting254379
|
Node: Scripting254922
|
||||||
Node: Frontend262162
|
Node: Frontend262705
|
||||||
Node: Examples271788
|
Node: Examples272331
|
||||||
Node: ExDevices272966
|
Node: ExDevices273509
|
||||||
Node: ExCreate273627
|
Node: ExCreate274170
|
||||||
Node: ExDialog274927
|
Node: ExDialog275470
|
||||||
Node: ExGrowing276198
|
Node: ExGrowing276741
|
||||||
Node: ExModifying277007
|
Node: ExModifying277550
|
||||||
Node: ExBootable277517
|
Node: ExBootable278060
|
||||||
Node: ExCharset278072
|
Node: ExCharset278615
|
||||||
Node: ExPseudo278968
|
Node: ExPseudo279511
|
||||||
Node: ExCdrecord279895
|
Node: ExCdrecord280438
|
||||||
Node: ExMkisofs280215
|
Node: ExMkisofs280758
|
||||||
Node: ExGrowisofs282112
|
Node: ExGrowisofs282655
|
||||||
Node: ExException283265
|
Node: ExException283808
|
||||||
Node: ExTime283723
|
Node: ExTime284266
|
||||||
Node: ExIncBackup284181
|
Node: ExIncBackup284724
|
||||||
Node: ExRestore288207
|
Node: ExRestore288750
|
||||||
Node: ExRecovery289153
|
Node: ExRecovery289696
|
||||||
Node: Files289725
|
Node: Files290268
|
||||||
Node: Environ291059
|
Node: Environ291602
|
||||||
Node: Seealso291807
|
Node: Seealso292350
|
||||||
Node: Bugreport292524
|
Node: Bugreport293067
|
||||||
Node: Legal293115
|
Node: Legal293658
|
||||||
Node: CommandIdx294127
|
Node: CommandIdx294670
|
||||||
Node: ConceptIdx312025
|
Node: ConceptIdx312568
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
@c man .\" First parameter, NAME, should be all caps
|
@c man .\" First parameter, NAME, should be all caps
|
||||||
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
@c man .\" other parameters are allowed: see man(7), man(1)
|
@c man .\" other parameters are allowed: see man(7), man(1)
|
||||||
@c man .TH XORRISO 1 "Version 1.5.5, Sep 18, 2022"
|
@c man .TH XORRISO 1 "Version 1.5.5, Oct 06, 2022"
|
||||||
@c man .\" Please adjust this date whenever revising the manpage.
|
@c man .\" Please adjust this date whenever revising the manpage.
|
||||||
@c man .\"
|
@c man .\"
|
||||||
@c man .\" Some roff macros, for reference:
|
@c man .\" Some roff macros, for reference:
|
||||||
@ -5244,6 +5244,14 @@ Mode @strong{as_mkisofs} tries to print the @strong{xorriso -as mkisofs}
|
|||||||
options, which are necessary to produce the found equipment.
|
options, which are necessary to produce the found equipment.
|
||||||
The intended use case is to use the mounted filesystem as input tree
|
The intended use case is to use the mounted filesystem as input tree
|
||||||
together with the printed options.
|
together with the printed options.
|
||||||
|
@*
|
||||||
|
If CHRP equipment is detected, then modes @strong{cmd} and @strong{as_mkisofs}
|
||||||
|
issue some of the relaxation commands or options which get detected by
|
||||||
|
command @strong{-assess_indev_features}. This happens because CHRP firmware
|
||||||
|
reads file paths from file /ppc/bootinfo.txt and tries to find them
|
||||||
|
case-insensitively in the ECMA-119 tree without using Rock Ridge. If such a
|
||||||
|
path has actually forbidden properties, like the name "powerpc-ieee1275", then
|
||||||
|
the relaxations are needed to bring it unmangled into the ECMA-119 tree.
|
||||||
@c man .TP
|
@c man .TP
|
||||||
@item -report_system_area mode
|
@item -report_system_area mode
|
||||||
@kindex -report_system_area shows MBR, GPT, and alike
|
@kindex -report_system_area shows MBR, GPT, and alike
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2022.09.20.082738"
|
#define Xorriso_timestamP "2022.10.07.095444"
|
||||||
|
Loading…
Reference in New Issue
Block a user