-/* If an item in dir_list is not found in full_list, delete it from the
- * filesystem. */
-void delete_missing(struct file_list *full_list, struct file_list *dir_list,
- const char *dirname)
-{
- int i, j, mode;
-
- if (max_delete && deletion_count >= max_delete)
- return;
-
- if (verbose > 1)
- rprintf(FINFO, "deleting in %s\n", safe_fname(dirname));
-
- for (i = dir_list->count-1; i >= 0; i--) {
- if (!dir_list->files[i]->basename)
- continue;
- mode = dir_list->files[i]->mode;
- if ((j = flist_find(full_list, dir_list->files[i])) < 0
- || (delete_during && S_ISDIR(mode)
- && !S_ISDIR(full_list->files[j]->mode))) {
- char *f = f_name(dir_list->files[i]);
- if (make_backups && (backup_dir || !is_backup_file(f))
- && !S_ISDIR(mode)) {
- make_backup(f);
- if (verbose) {
- rprintf(FINFO, "deleting %s\n",
- safe_fname(f));
- }
- } else {
- int dflags = delete_during
- ? DEL_DIR | DEL_FORCE_RECURSE
- : DEL_DIR | DEL_NO_RECURSE;
- delete_file(f, S_ISDIR(mode) ? dflags : 0);
- }
- deletion_count++;
- if (max_delete && deletion_count >= max_delete)
- break;
- }
- }