-@@ -1759,11 +1766,12 @@ void delete_missing(struct file_list *fu
- || (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))
-+ int backup_file = is_backup_file(f);
-+ if (make_backups && (backup_dir_rm || !backup_file)
- && !S_ISDIR(mode)) {
-- make_backup(f);
-+ safe_delete(f);
- if (verbose) {
-- rprintf(FINFO, "deleting %s\n",
-+ rprintf(FINFO, "safe-deleting %s\n",
- safe_fname(f));
- }
- } else if (S_ISDIR(mode)) {
---- orig/options.c 2005-01-30 10:07:21
-+++ options.c 2005-01-28 19:17:35
-@@ -119,10 +119,14 @@ int no_detach = 0;
+@@ -112,8 +119,8 @@ static int delete_item(char *fname, int
+ if (!S_ISDIR(mode)) {
+ if (max_delete && ++deletion_count > max_delete)
+ return 0;
+- if (make_backups && (backup_dir || !is_backup_file(fname)))
+- ok = make_backup(fname);
++ if (make_backups && (backup_dir_dels || !is_backup_file(fname)))
++ ok = safe_delete(fname);
+ else
+ ok = robust_unlink(fname) == 0;
+ if (ok) {
+@@ -136,9 +143,9 @@ static int delete_item(char *fname, int
+ || (dry_run && zap_dir)) {
+ ok = 0;
+ errno = ENOTEMPTY;
+- } else if (make_backups && !backup_dir && !is_backup_file(fname)
++ } else if (make_backups && !backup_dir_dels && !is_backup_file(fname)
+ && !(flags & DEL_FORCE_RECURSE))
+- ok = make_backup(fname);
++ ok = safe_delete(fname);
+ else
+ ok = do_rmdir(fname) == 0;
+ if (ok) {
+--- orig/options.c 2005-05-19 08:52:42
++++ options.c 2005-03-01 01:25:39
+@@ -128,10 +128,14 @@ int no_detach