New command -report_el_torito (former -report_system_area "el_torito")

This commit is contained in:
2014-04-29 17:49:08 +00:00
parent 784d20fb4b
commit f68d9e29c6
10 changed files with 118 additions and 93 deletions

View File

@ -1370,34 +1370,24 @@ static void Xorriso_report_lines(struct XorrisO *xorriso,
*/
int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag)
{
int ret, line_count, is_elto= 0;
int ret, line_count;
char **lines = NULL;
IsoImage *image;
if(strcmp(form, "help") == 0) {
ret= iso_image_report_system_area(NULL, &lines, &line_count, 1);
if(flag & 1)
ret= iso_image_report_el_torito(NULL, &lines, &line_count, 1);
else
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, "With -report_system_area \"el_torito\":\n");
if(flag & 1)
sprintf(xorriso->result_line, "With -report_el_torito \"plain\":\n");
else
sprintf(xorriso->result_line, "With -report_system_area \"plain\":\n");
Xorriso_result(xorriso, 0);
sprintf(xorriso->result_line,
"------------------------------------------------------------------------------\n");
@ -1409,22 +1399,19 @@ int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag)
ret= Xorriso_get_volume(xorriso, &image, 0);
if(ret <= 0)
goto ex;
ret= iso_image_report_system_area(image, &lines, &line_count, 0);
if(flag & 1)
ret= iso_image_report_el_torito(image, &lines, &line_count, 0);
else
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) {
} else if(strncmp(form, "gpt_crc_of:", 11) == 0 && !(flag & 1)) {
ret = Xorriso_gpt_crc(xorriso, form + 11, 0);
goto ex;
} else {
strcpy(xorriso->info_text,
"-report_system_area form parameter not recognized: ");
sprintf(xorriso->info_text,
"%s form parameter not recognized: ",
flag & 1 ? "-report_el_torito" : "-report_system_area");
Text_shellsafe(form, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
@ -1432,7 +1419,7 @@ int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag)
if(ret < 0)
goto ex;
if(lines == NULL || ret == 0) {
if(is_elto)
if(flag & 1)
strcpy(xorriso->info_text, "No El Torito information was loaded");
else
strcpy(xorriso->info_text, "No System Area was loaded");
@ -1440,7 +1427,7 @@ int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag)
ret= 2; goto ex;
}
if(line_count == 0) {
if(is_elto)
if(flag & 1)
strcpy(xorriso->info_text, "No El Torito information available");
else
strcpy(xorriso->info_text, "System Area only contains 0-bytes");
@ -1451,7 +1438,7 @@ int Xorriso_report_system_area(struct XorrisO *xorriso, char *form, int flag)
ret= 1;
ex:;
if(lines != NULL) {
if(is_elto)
if(flag & 1)
iso_image_report_el_torito(NULL, &lines, &line_count, 1 << 15);
else
iso_image_report_system_area(NULL, &lines, &line_count, 1 << 15);