New -check_media option data_to="-" for standard output

This commit is contained in:
2020-09-30 21:07:50 +02:00
parent 56b2d88667
commit 588578f9a8
7 changed files with 103 additions and 46 deletions

View File

@ -1761,7 +1761,7 @@ int Xorriso_option_check_media(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag)
{
int ret, i, count, lba, blocks, quality, pass, was_md5= 0, was_event= 0;
int end_idx, old_idx, os_errno;
int end_idx, old_idx, os_errno, to_info= 0;
char quality_name[80], *head_buffer= NULL;
struct SpotlisT *spotlist= NULL;
struct CheckmediajoB *job= NULL;
@ -1781,6 +1781,7 @@ int Xorriso_option_check_media(struct XorrisO *xorriso,
if(ret <= 0)
goto ex;
to_info= (strcmp(job->data_to_path, "-") == 0);
if((job->report_mode == 1 || job->report_mode == 2) && job->use_dev == 1) {
sprintf(xorriso->info_text,
"-check_media: cannot report=*files while use=outdef");
@ -1793,6 +1794,12 @@ int Xorriso_option_check_media(struct XorrisO *xorriso,
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
if(job->patch_lba0 && to_info) {
sprintf(xorriso->info_text,
"-check_media: cannot apply patch_lba0= while data_to= is \"-\"");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
if(job->use_dev == 2) {
if(job->sector_map_path[0] == 0) {
@ -1847,7 +1854,12 @@ int Xorriso_option_check_media(struct XorrisO *xorriso,
sprintf(xorriso->result_line,
"MD5 checks : lba , size , result\n");
}
Xorriso_result(xorriso,0);
if(to_info) {
strcpy(xorriso->info_text, xorriso->result_line);
Xorriso_info(xorriso, 0);
} else {
Xorriso_result(xorriso, 0);
}
count= Spotlist_count(spotlist, 0);
for(i= 0; i < count; i++) {
ret= Spotlist_get_item(spotlist, i, &lba, &blocks, &quality, 0);
@ -1871,7 +1883,12 @@ int Xorriso_option_check_media(struct XorrisO *xorriso,
pass == 0 ? "Media region " : "MD5 tag range",
lba, blocks, Spotlist__quality_name(quality, quality_name,
xorriso->check_media_bad_limit, 0));
Xorriso_result(xorriso,0);
if(to_info) {
strcpy(xorriso->info_text, xorriso->result_line);
Xorriso_info(xorriso, 0);
} else {
Xorriso_result(xorriso, 0);
}
}
}
}