+--- orig/flist.c 2005-01-25 12:14:14
++++ flist.c 2005-01-24 02:21:33
+@@ -47,6 +47,8 @@ extern char curr_dir[MAXPATHLEN];
+ extern unsigned int curr_dir_len;
+ extern char *backup_dir;
+ extern char *backup_suffix;
++extern char *delete_dir;
++extern char *delete_suffix;
+ extern int filesfrom_fd;
+
+ extern int one_file_system;
+@@ -61,6 +63,7 @@ extern int relative_paths;
+ extern int implied_dirs;
+ extern int make_backups;
+ extern int backup_suffix_len;
++extern int delete_suffix_len;
+ extern int copy_links;
+ extern int copy_unsafe_links;
+ extern int protocol_version;
+@@ -1659,10 +1662,14 @@ char *f_name(struct file_struct *f)
+ return f_name_to(f, names[n]);
+ }
+
++/* Function now checks if file matches backup or delete suffix patterns */
+ 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 - delete_suffix_len;
++ return k > 0 && strcmp(fn+k, delete_suffix) == 0;
+ }
+
+ void delete_in_dir(struct file_list *flist, char *fname)
+@@ -1716,11 +1723,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-25 12:14:14
++++ options.c 2004-11-27 18:37:18
+@@ -119,10 +119,14 @@ int no_detach = 0;