X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/8d9dc9f99db13d42272b7c150f2e6849331ccdc1..54816348d163e63cf696434d8d0c8dd20da3641b:/rsync.c diff --git a/rsync.c b/rsync.c index 82efef54..2f772ace 100644 --- a/rsync.c +++ b/rsync.c @@ -267,6 +267,7 @@ static int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st, { int updated = 0; STRUCT_STAT st2; + extern int am_daemon; if (dry_run) return 0; @@ -300,8 +301,9 @@ static int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st, } #endif - if ((am_root && preserve_uid && st->st_uid != file->uid) || - (preserve_gid && st->st_gid != file->gid)) { + if ((am_root || !am_daemon) && + ((am_root && preserve_uid && st->st_uid != file->uid) || + (preserve_gid && st->st_gid != file->gid))) { if (do_lchown(fname, (am_root&&preserve_uid)?file->uid:-1, preserve_gid?file->gid:-1) != 0) { @@ -940,7 +942,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) /* now we need to fix any directory permissions that were modified during the transfer */ for (i = 0; i < flist->count; i++) { - struct file_struct *file = flist->files[i]; + file = flist->files[i]; if (!file->basename || !S_ISDIR(file->mode)) continue; recv_generator(f_name(file),flist,i,-1); }