+ if ((argument->dle.exclude_file &&
+ argument->dle.exclude_file->nb_element >= 1) ||
+ (argument->dle.exclude_list &&
+ argument->dle.exclude_list->nb_element >= 1)) {
+ g_ptr_array_add(argv_ptr, stralloc("-match-tree"));
+ g_ptr_array_add(argv_ptr, stralloc("-not"));
+ }
+ if (argument->dle.exclude_file &&
+ argument->dle.exclude_file->nb_element >= 1) {
+ sle_t *excl;
+ for (excl = argument->dle.exclude_file->first; excl != NULL;
+ excl = excl->next) {
+ char *ex;
+ if (strcmp(excl->name, "./") == 0) {
+ ex = g_strdup_printf("pat=%s", excl->name+2);
+ } else {
+ ex = g_strdup_printf("pat=%s", excl->name);
+ }
+ g_ptr_array_add(argv_ptr, ex);
+ }
+ }
+ if (argument->dle.exclude_list &&
+ argument->dle.exclude_list->nb_element >= 1) {
+ sle_t *excl;
+ for (excl = argument->dle.exclude_list->first; excl != NULL;
+ excl = excl->next) {
+ char *exclname = fixup_relative(excl->name, argument->dle.device);
+ FILE *exclude;
+ char *aexc;
+ if ((exclude = fopen(exclname, "r")) != NULL) {
+ while ((aexc = agets(exclude)) != NULL) {
+ if (aexc[0] != '\0') {
+ char *ex;
+ if (strcmp(aexc, "./") == 0) {
+ ex = g_strdup_printf("pat=%s", aexc+2);
+ } else {
+ ex = g_strdup_printf("pat=%s", aexc);
+ }
+ g_ptr_array_add(argv_ptr, ex);
+ }
+ amfree(aexc);
+ }
+ fclose(exclude);
+ }
+ amfree(exclname);
+ }
+ }
+