- void delete_in_dir(struct file_list *flist, char *fname)
-@@ -1727,11 +1734,12 @@ void delete_in_dir(struct file_list *fli
- || (delete_during && S_ISDIR(mode)
- && !S_ISDIR(flist->files[j]->mode))) {
- char *f = f_name(del_flist->files[i]);
-- if (make_backups && (backup_dir || !is_backup_file(f))
-+ int backup_file = is_backup_file(f);
-+ if (make_backups && (delete_dir || !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 {
---- orig/options.c 2005-01-24 01:43:10
-+++ options.c 2004-11-27 18:37:18
-@@ -119,10 +119,14 @@ int no_detach = 0;
+
+@@ -112,8 +119,8 @@ static int delete_item(char *fname, int
+ return -1;
+
+ if (!S_ISDIR(mode)) {
+- 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) {
+@@ -134,9 +141,9 @@ static int delete_item(char *fname, int
+ if (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-03-02 09:52:06
++++ options.c 2005-03-01 01:25:39
+@@ -127,10 +127,14 @@ int no_detach