|
|
|
@ -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(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(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; |
|
|
|
|
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); |
|
|
|
|
|
|
|
|
|
} 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); |
|
|
|
|
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(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); |
|
|
|
|