From 1f7e29b99cf032c792d0d7ed49e74b1c14ddb5ea Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Wed, 9 Mar 2005 03:49:07 +0000 Subject: [PATCH] Fixed the change-report output for a directory that has no write permissions. --- generator.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/generator.c b/generator.c index dde3f348..0aae2707 100644 --- a/generator.c +++ b/generator.c @@ -1146,24 +1146,28 @@ void generate_files(int f_out, struct file_list *flist, char *local_name, for (i = 0; i < flist->count; i++) { struct file_struct *file = flist->files[i]; - struct file_struct copy; if (!file->basename) continue; + recv_generator(local_name ? local_name : f_name_to(file, fbuf), + file, i, itemizing, maybe_PERMS_REPORT, code, + f_out, f_out_name); + /* We need to ensure that any dirs we create have writeable * permissions during the time we are putting files within * them. This is then fixed after the transfer is done. */ if (!am_root && S_ISDIR(file->mode) && !(file->mode & S_IWUSR)) { - copy = *file; - copy.mode |= S_IWUSR; /* user write */ - file = © + int mode = file->mode | S_IWUSR; /* user write */ + char *fname = local_name ? local_name : fbuf; + if (do_chmod(fname, mode & CHMOD_BITS) < 0) { + rsyserr(FERROR, errno, + "failed to modify permissions on %s", + full_fname(fname)); + } need_retouch_dir_perms = 1; } - recv_generator(local_name ? local_name : f_name_to(file, fbuf), - file, i, itemizing, maybe_PERMS_REPORT, code, - f_out, f_out_name); if (preserve_hard_links) check_for_finished_hlinks(itemizing, code); -- 2.34.1