From 4337eeb754bb0b8d903a96c2d3b35306484b12cc Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Thu, 22 May 2008 07:32:11 -0700 Subject: [PATCH] A cuple more fixes for --xattrs combined with --backup, this time to handle when --link-dest is also used. --- generator.c | 8 ++++++-- rsync.c | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/generator.c b/generator.c index 27e5b97d..858305e7 100644 --- a/generator.c +++ b/generator.c @@ -922,6 +922,7 @@ static int copy_altdest_file(const char *src, const char *dest, struct file_stru { char buf[MAXPATHLEN]; const char *copy_to, *partialptr; + int save_preserve_xattrs = preserve_xattrs; int ok, fd_w; if (inplace) { @@ -946,7 +947,9 @@ static int copy_altdest_file(const char *src, const char *dest, struct file_stru return -1; } partialptr = partial_dir ? partial_dir_fname(dest) : NULL; + preserve_xattrs = 0; /* xattrs were copied with file */ ok = finish_transfer(dest, copy_to, src, partialptr, file, 1, 0); + preserve_xattrs = save_preserve_xattrs; cleanup_disable(); return ok ? 0 : -1; } @@ -1948,10 +1951,11 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, if (f_copy >= 0) close(f_copy); #ifdef SUPPORT_XATTRS - if (preserve_xattrs) + if (preserve_xattrs) { copy_xattrs(fname, backupptr); + preserve_xattrs = 0; + } #endif - preserve_xattrs = 0; set_file_attrs(backupptr, back_file, NULL, NULL, 0); preserve_xattrs = save_preserve_xattrs; if (verbose > 1) { diff --git a/rsync.c b/rsync.c index 9921da04..85244c88 100644 --- a/rsync.c +++ b/rsync.c @@ -564,7 +564,8 @@ int finish_transfer(const char *fname, const char *fnametmp, if (make_backups > 0 && overwriting_basis) { if (!make_backup(fname)) return 1; - fnamecmp = get_backup_name(fname); + if (fnamecmp == fname) + fnamecmp = get_backup_name(fname); } /* Change permissions before putting the file into place. */ -- 2.34.1