|
|
|
@ -667,15 +667,17 @@ ex:;
|
|
|
|
|
bit2= do not count deleted files with rm and rm_r |
|
|
|
|
bit3= use Xorriso_findi_sorted() rather than Xorriso_findi() |
|
|
|
|
(this can also be ordered by test -sort_lba) |
|
|
|
|
bit4= return number of matches plus 1 |
|
|
|
|
*/ |
|
|
|
|
int Xorriso_option_find(struct XorrisO *xorriso, int argc, char **argv, |
|
|
|
|
int *idx, int flag) |
|
|
|
|
{ |
|
|
|
|
int ret, i, end_idx, type= 0, action, deleter= 0, start_lba, count; |
|
|
|
|
int list_extattr_head= 0, bsl_mem; |
|
|
|
|
int list_extattr_head= 0, bsl_mem, disk_path; |
|
|
|
|
struct FindjoB *job, *first_job= NULL, *new_job; |
|
|
|
|
char *start_path, *path= NULL, *cpt, *other_path_start= NULL, *cd_pt; |
|
|
|
|
char *access_acl_text= NULL, *default_acl_text= NULL, *list_extattr_mode; |
|
|
|
|
char *arg1_pt; |
|
|
|
|
|
|
|
|
|
struct stat dir_stbuf; |
|
|
|
|
uid_t user= 0; |
|
|
|
@ -769,14 +771,25 @@ not_enough_arguments:;
|
|
|
|
|
Findjob_set_filter_filter(job, -1, 0); |
|
|
|
|
} else if(strcmp(argv[i], "-has_md5")==0) { |
|
|
|
|
Findjob_set_prop_filter(job, 15, 1, 0); |
|
|
|
|
} else if(strcmp(argv[i], "-disk_name")==0) { |
|
|
|
|
} else if(strcmp(argv[i], "-disk_name")==0 || |
|
|
|
|
strcmp(argv[i], "-disk_path")==0) { |
|
|
|
|
disk_path= (strcmp(argv[i], "-disk_path") == 0); |
|
|
|
|
if(i+1>=end_idx) |
|
|
|
|
goto not_enough_arguments; |
|
|
|
|
i++; |
|
|
|
|
ret= Findjob_set_name_expr(job, argv[i], 2); |
|
|
|
|
arg1_pt= argv[i]; |
|
|
|
|
if(disk_path) { |
|
|
|
|
ret= Xorriso_make_abs_adr(xorriso, xorriso->wdx, argv[i], path, |
|
|
|
|
1 | 2 | 4 | 8); |
|
|
|
|
if(ret<=0) |
|
|
|
|
goto ex; |
|
|
|
|
arg1_pt= path; |
|
|
|
|
} |
|
|
|
|
ret= Findjob_set_name_expr(job, arg1_pt, 2 + disk_path); |
|
|
|
|
if(ret<=0) { |
|
|
|
|
sprintf(xorriso->info_text, |
|
|
|
|
"-find[ix]: cannot set -disk_name expression "); |
|
|
|
|
"-find[ix]: cannot set %s ", |
|
|
|
|
disk_path ? "-disk_path address" : "-disk_name expression"); |
|
|
|
|
Text_shellsafe(argv[i], xorriso->info_text, 1); |
|
|
|
|
goto sorry_ex; |
|
|
|
|
} |
|
|
|
@ -1200,6 +1213,8 @@ ex:;
|
|
|
|
|
free(access_acl_text); |
|
|
|
|
if(default_acl_text != NULL) |
|
|
|
|
free(default_acl_text); |
|
|
|
|
if(ret > 0 && (flag & 16) && first_job != NULL) |
|
|
|
|
ret= first_job->match_count + 1; |
|
|
|
|
Findjob_destroy(&first_job, 0); |
|
|
|
|
Xorriso_free_meM(path); |
|
|
|
|
Xorriso_free_meM(other_path_start); |
|
|
|
|