Experimental -find action -exec set_filter with some hardcoded filter commands

This commit is contained in:
2009-03-29 16:49:38 +00:00
parent 410537761b
commit 06dfe11e36
5 changed files with 248 additions and 15 deletions

View File

@ -2480,6 +2480,8 @@ struct FindjoB {
24= getfacl
25= setfacl access_acl default_acl
26= getfattr
27= setfattr
28= set_filter name suffix
*/
int action;
@ -2506,8 +2508,8 @@ int Findjob_new(struct FindjoB **o, char *start_path, int flag)
m->start_path= NULL;
m->name_expr= NULL;
m->file_type= 0;
m->start_lba= -1;
m->end_lba= -1;
m->start_lba= 0;
m->end_lba= 0;
m->damage_filter= 0;
m->commit_filter= 0;
m->acl_filter= 0;
@ -2611,7 +2613,10 @@ int Findjob_set_lba_range(struct FindjoB *o, int start_lba, int count,
int flag)
{
o->start_lba= start_lba;
o->end_lba= start_lba + count - 1;
if(start_lba > 0)
o->end_lba= start_lba + count - 1;
else
o->end_lba= start_lba - count + 1;
return(1);
}
@ -6955,7 +6960,8 @@ int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr,
(*result)|= 64;
}
}
if(S_ISREG(s2.st_mode) && s1.st_size != s2.st_size) {
if((!(xorriso->do_aaip & 32)) &&
S_ISREG(s2.st_mode) && s1.st_size != s2.st_size) {
sprintf(respt, "%s st_size : %.f <> %.f diff= %.f\n",
a, (double) s1.st_size, (double) s2.st_size,
((double) s1.st_size) - (double) s2.st_size);
@ -13696,6 +13702,15 @@ not_enough_arguments:;
if(ret <= 0)
goto ex;
Findjob_set_action_text_2(job, 27, argv[i - 1], argv[i], 0);
} else if(strcmp(cpt, "set_filter")==0) {
if(i+2>=end_idx)
goto not_enough_arguments;
i+= 2;
Findjob_set_action_text_2(job, 28, argv[i - 1], argv[i], 0);
if(!(flag&2)) {
Xorriso_pacifier_reset(xorriso, 0);
mem_lut= xorriso->last_update_time;
}
} else {
sprintf(xorriso->info_text, "-find -exec: unknown action %s",
Text_shellsafe(argv[i], sfe, 0));
@ -13719,6 +13734,9 @@ ex:;
if(deleter && !(flag&2))
Xorriso_pacifier_callback(xorriso, "iso_rr_paths deleted",
xorriso->pacifier_count, 0, "", 1|2);
else if(first_job->action == 28 && !(flag&2))
Xorriso_pacifier_callback(xorriso, "file filters processed",
xorriso->pacifier_count, 0, "", 1 | 2);
else if(mem_lut!=xorriso->last_update_time && mem_lut!=0.0 && !(flag&2))
Xorriso_pacifier_callback(xorriso, "content bytes read",
xorriso->pacifier_count, 0, "", 1);