Completed find action check_md5
This commit is contained in:
@ -4829,7 +4829,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->start_time= 0.0;
|
||||
m->last_update_time= 0.0;
|
||||
m->find_compare_result= 1;
|
||||
m->find_check_md5_result= 1;
|
||||
m->find_check_md5_result= 0;
|
||||
|
||||
m->node_counter= 0;
|
||||
m->node_array_size= 0;
|
||||
@ -12470,6 +12470,35 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_report_m5_outcome(struct XorrisO *xorriso, char *severity,
|
||||
int flag)
|
||||
{
|
||||
if((xorriso->find_check_md5_result & 3) == 0) {
|
||||
sprintf(xorriso->result_line,
|
||||
"File contents and their MD5 checksums match.\n");
|
||||
} else if(xorriso->find_check_md5_result & 1) {
|
||||
sprintf(xorriso->result_line,
|
||||
"Mismatch detected between file contents and MD5 checksums.\n");
|
||||
}
|
||||
Xorriso_result(xorriso,0);
|
||||
if(xorriso->find_check_md5_result & 2) {
|
||||
sprintf(xorriso->result_line,
|
||||
"Encountered other errors during MD5 checking.\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
if(xorriso->find_check_md5_result & 4) {
|
||||
sprintf(xorriso->result_line,
|
||||
"There were data files which had no MD5 and thus could not be checked.\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
if((xorriso->find_check_md5_result & 3) && strcmp(severity, "ALL") != 0) {
|
||||
sprintf(xorriso->info_text, "Event triggered by MD5 comparison mismatch");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, severity, 0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------- Options API ------------------------ */
|
||||
|
||||
|
||||
@ -13352,7 +13381,7 @@ int Xorriso_option_check_md5(struct XorrisO *xorriso,
|
||||
return(ret);
|
||||
}
|
||||
|
||||
xorriso->find_check_md5_result= 1;
|
||||
xorriso->find_check_md5_result= 0;
|
||||
for(i= 0; i < optc; i++) {
|
||||
if(flag & 8) {
|
||||
ret= Findjob_new(&job, optv[i], 0);
|
||||
@ -13360,7 +13389,7 @@ int Xorriso_option_check_md5(struct XorrisO *xorriso,
|
||||
Xorriso_no_findjob(xorriso, "-check_md5_r", 0);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
Findjob_set_action_target(job, 35, NULL, 0);
|
||||
Findjob_set_action_target(job, 35, severity, 0);
|
||||
cpt= optv[i];
|
||||
ret= Xorriso_findi_sorted(xorriso, job, (off_t) 0, 1, &cpt, 0);
|
||||
Findjob_destroy(&job, 0);
|
||||
@ -13368,12 +13397,16 @@ int Xorriso_option_check_md5(struct XorrisO *xorriso,
|
||||
ret= xorriso->find_compare_result;
|
||||
else {
|
||||
ret= -1;
|
||||
xorriso->find_check_md5_result= -1;
|
||||
xorriso->find_check_md5_result|= 2;
|
||||
}
|
||||
} else {
|
||||
ret= Xorriso_check_md5(xorriso, NULL, optv[i], 4);
|
||||
if(ret < xorriso->find_check_md5_result)
|
||||
xorriso->find_check_md5_result= ret;
|
||||
if(ret < 0)
|
||||
xorriso->find_check_md5_result|= 2;
|
||||
else if(ret == 0)
|
||||
xorriso->find_check_md5_result|= 1;
|
||||
else if(ret == 2)
|
||||
xorriso->find_check_md5_result|= 4;
|
||||
}
|
||||
if(ret>0 && !xorriso->request_to_abort)
|
||||
continue; /* regular bottom of loop */
|
||||
@ -13389,20 +13422,8 @@ int Xorriso_option_check_md5(struct XorrisO *xorriso,
|
||||
Xorriso_pacifier_callback(xorriso, "content bytes read",
|
||||
xorriso->pacifier_count, 0, "", 1);
|
||||
report_outcome:;
|
||||
if(xorriso->find_check_md5_result > 0) {
|
||||
sprintf(xorriso->result_line,
|
||||
"File contents and their MD5 checksums match.\n");
|
||||
} else if(xorriso->find_check_md5_result == 0) {
|
||||
sprintf(xorriso->result_line,
|
||||
"Differences detected between file contents and MD5 checksums.\n");
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "MD5 checking failed due to error.\n");
|
||||
}
|
||||
Xorriso_result(xorriso,0);
|
||||
if(xorriso->find_check_md5_result <= 0 && strcmp(severity, "ALL") != 0) {
|
||||
sprintf(xorriso->info_text, "Event triggered by MD5 comparison mismatch");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, severity, 0);
|
||||
}
|
||||
Xorriso_report_m5_outcome(xorriso, severity, 0);
|
||||
|
||||
ex:;
|
||||
(*idx)= end_idx;
|
||||
Xorriso_opt_args(xorriso, "-getfacl", argc, argv, *idx, &end_idx,
|
||||
@ -13410,7 +13431,7 @@ ex:;
|
||||
Findjob_destroy(&job, 0);
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
return(xorriso->find_check_md5_result > 0);
|
||||
return((xorriso->find_check_md5_result & 3) == 0);
|
||||
}
|
||||
|
||||
|
||||
@ -14993,6 +15014,12 @@ not_enough_exec_arguments:;
|
||||
Findjob_set_action_target(job, 33, NULL, 0);
|
||||
} else if(strcmp(cpt, "get_md5")==0) {
|
||||
Findjob_set_action_target(job, 34, NULL, 0);
|
||||
} else if(strcmp(cpt, "check_md5")==0) {
|
||||
if(i + 1 >= end_idx)
|
||||
goto not_enough_exec_arguments;
|
||||
i+= 1;
|
||||
Findjob_set_action_target(job, 35, argv[i], 0);
|
||||
flag|= 8;
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "-find -exec: unknown action %s",
|
||||
Text_shellsafe(argv[i], sfe, 0));
|
||||
@ -15011,7 +15038,7 @@ sorry_ex:;
|
||||
0);
|
||||
else if(flag & 8) {
|
||||
cpt= start_path;
|
||||
ret= Xorriso_findi_sorted(xorriso, first_job, (off_t) 0, 1, &cpt, 0);
|
||||
ret= Xorriso_findi_sorted(xorriso, first_job, (off_t) 0, 1, &cpt, 8);
|
||||
} else
|
||||
ret= Xorriso_findi(xorriso, first_job, NULL, (off_t) 0, NULL,
|
||||
start_path, &dir_stbuf, 0, (flag&4)>>1);
|
||||
|
Reference in New Issue
Block a user