|
|
|
@ -1424,22 +1424,76 @@ ex:;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void Xorriso_report_lines(struct XorrisO *xorriso,
|
|
|
|
|
char **lines, int line_count)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
for(i = 0; i < line_count ; i++) {
|
|
|
|
|
sprintf(xorriso->result_line, "%s\n", lines[i]);
|
|
|
|
|
Xorriso_result(xorriso,0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* @param flag bit0= report El Torito rather than System Area
|
|
|
|
|
*/
|
|
|
|
|
int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag)
|
|
|
|
|
{
|
|
|
|
|
int ret, line_count, i;
|
|
|
|
|
int ret, line_count, is_elto= 0;
|
|
|
|
|
char **lines = NULL;
|
|
|
|
|
IsoImage *image;
|
|
|
|
|
|
|
|
|
|
if(strcmp(form, "help") == 0) {
|
|
|
|
|
ret= iso_image_report_system_area(NULL, &lines, &line_count, 1);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
sprintf(xorriso->result_line,
|
|
|
|
|
"------------------------------------------------------------------------------\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
sprintf(xorriso->result_line, "With -report_system_area \"plain\":\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
sprintf(xorriso->result_line,
|
|
|
|
|
"------------------------------------------------------------------------------\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
sprintf(xorriso->result_line, "\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
Xorriso_report_lines(xorriso, lines, line_count);
|
|
|
|
|
iso_image_report_system_area(NULL, &lines, &line_count, 1 << 15);
|
|
|
|
|
ret= iso_image_report_el_torito(NULL, &lines, &line_count, 1);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
is_elto= 1;
|
|
|
|
|
sprintf(xorriso->result_line, "\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
sprintf(xorriso->result_line,
|
|
|
|
|
"------------------------------------------------------------------------------\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
sprintf(xorriso->result_line, "With -report_system_area \"el_torito\":\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
sprintf(xorriso->result_line,
|
|
|
|
|
"------------------------------------------------------------------------------\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
sprintf(xorriso->result_line, "\n");
|
|
|
|
|
Xorriso_result(xorriso, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(form, "") == 0 || strcmp(form, "plain") == 0) {
|
|
|
|
|
ret= Xorriso_get_volume(xorriso, &image, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
ret= iso_image_report_system_area(image, &lines, &line_count, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(form, "el_torito") == 0) {
|
|
|
|
|
ret= Xorriso_get_volume(xorriso, &image, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
is_elto= 1;
|
|
|
|
|
ret= iso_image_report_el_torito(image, &lines, &line_count, 0);
|
|
|
|
|
|
|
|
|
|
} else if(strncmp(form, "gpt_crc_of:", 11) == 0) {
|
|
|
|
|
ret = Xorriso_gpt_crc(xorriso, form + 11, 0);
|
|
|
|
|
goto ex;
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
strcpy(xorriso->info_text,
|
|
|
|
|
"-report_system_area form parameter not recognized: ");
|
|
|
|
@ -1449,25 +1503,31 @@ int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag)
|
|
|
|
|
}
|
|
|
|
|
if(ret < 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
if(lines == 0 || ret == 0) {
|
|
|
|
|
strcpy(xorriso->info_text, "No System Area was loaded");
|
|
|
|
|
if(lines == NULL || ret == 0) {
|
|
|
|
|
if(is_elto)
|
|
|
|
|
strcpy(xorriso->info_text, "No El Torito information was loaded");
|
|
|
|
|
else
|
|
|
|
|
strcpy(xorriso->info_text, "No System Area was loaded");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
|
|
|
ret= 2; goto ex;
|
|
|
|
|
}
|
|
|
|
|
if(line_count == 0) {
|
|
|
|
|
strcpy(xorriso->info_text, "System Area only contains 0-bytes");
|
|
|
|
|
if(is_elto)
|
|
|
|
|
strcpy(xorriso->info_text, "No El Torito information available");
|
|
|
|
|
else
|
|
|
|
|
strcpy(xorriso->info_text, "System Area only contains 0-bytes");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
|
|
|
ret= 2; goto ex;
|
|
|
|
|
}
|
|
|
|
|
for(i = 0; i < line_count ; i++) {
|
|
|
|
|
sprintf(xorriso->result_line, "%s\n", lines[i]);
|
|
|
|
|
Xorriso_result(xorriso,0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Xorriso_report_lines(xorriso, lines, line_count);
|
|
|
|
|
ret= 1;
|
|
|
|
|
ex:;
|
|
|
|
|
if(lines != NULL)
|
|
|
|
|
iso_image_report_system_area(NULL, &lines, &line_count, 1 << 15);
|
|
|
|
|
if(lines != NULL) {
|
|
|
|
|
if(is_elto)
|
|
|
|
|
iso_image_report_el_torito(NULL, &lines, &line_count, 1 << 15);
|
|
|
|
|
else
|
|
|
|
|
iso_image_report_system_area(NULL, &lines, &line_count, 1 << 15);
|
|
|
|
|
}
|
|
|
|
|
return(ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|