Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
40cc285
)
Made delete_file() backup files it is removing if --backup was specified.
author
Wayne Davison
<wayned@samba.org>
Sat, 19 Feb 2005 23:39:47 +0000
(23:39 +0000)
committer
Wayne Davison
<wayned@samba.org>
Sat, 19 Feb 2005 23:39:47 +0000
(23:39 +0000)
rsync.c
patch
|
blob
|
blame
|
history
diff --git
a/rsync.c
b/rsync.c
index
408f471
..
d9e55c7
100644
(file)
--- 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 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)) {
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++;
if ((verbose || log_format) && !(flags & DEL_TERSE))
log_delete(fname, mode);
deletion_count++;