From 042f470ef9bd960986962b5b60dd54817dc5ae03 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 19 Feb 2005 23:39:47 +0000 Subject: [PATCH] Made delete_file() backup files it is removing if --backup was specified. --- rsync.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/rsync.c b/rsync.c index 408f4716..d9e55c7b 100644 --- a/rsync.c +++ b/rsync.c @@ -42,6 +42,15 @@ extern int make_backups; extern struct stats stats; extern char *backup_dir; extern char *log_format; +extern char *backup_suffix; +extern int backup_suffix_len; + + +static int is_backup_file(char *fn) +{ + int k = strlen(fn) - backup_suffix_len; + return k > 0 && strcmp(fn+k, backup_suffix) == 0; +} /* @@ -72,7 +81,12 @@ int delete_file(char *fname, int mode, int flags) return -1; if (!S_ISDIR(mode)) { - if (robust_unlink(fname) == 0) { + int ok; + if (make_backups && (backup_dir || !is_backup_file(fname))) + ok = make_backup(fname); + else + ok = robust_unlink(fname) == 0; + if (ok) { if ((verbose || log_format) && !(flags & DEL_TERSE)) log_delete(fname, mode); deletion_count++; -- 2.34.1