+--- orig/generator.c 2005-03-05 00:25:24
++++ generator.c 2005-03-05 00:26:54
+@@ -83,6 +83,9 @@ extern dev_t filesystem_dev;
+ extern char *backup_dir;
+ extern char *backup_suffix;
+ extern int backup_suffix_len;
++extern char *backup_dir_dels;
++extern char *backup_suffix_dels;
++extern int backup_suffix_dels_len;
+ extern struct file_list *the_file_list;
+ extern struct filter_list_struct server_filter_list;
+
+@@ -91,10 +94,14 @@ int allowed_lull = 0;
+ static int deletion_count = 0; /* used to implement --max-delete */
+
+
++/* Function now compares both backup_suffix and backup_suffix_dels. */
+ static int is_backup_file(char *fn)
+ {
+ int k = strlen(fn) - backup_suffix_len;
+- return k > 0 && strcmp(fn+k, backup_suffix) == 0;
++ if (k > 0 && strcmp(fn+k, backup_suffix) == 0)
++ return 1;
++ k += backup_suffix_len - backup_suffix_dels_len;
++ return k > 0 && strcmp(fn+k, backup_suffix_dels) == 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