mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-03-23 08:41:15 -04:00
When permissions aren't being preserved, set them via the new
dest_mode() function.
This commit is contained in:
13
generator.c
13
generator.c
@@ -855,13 +855,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
|
||||
return;
|
||||
}
|
||||
|
||||
if (statret == 0 && !preserve_perms
|
||||
&& S_ISDIR(st.st_mode) == S_ISDIR(file->mode)) {
|
||||
/* if the file exists already and we aren't perserving
|
||||
* permissions then act as though the remote end sent
|
||||
* us the file permissions we already have */
|
||||
file->mode = (file->mode & ~CHMOD_BITS)
|
||||
| (st.st_mode & CHMOD_BITS);
|
||||
/* If we're not preserving permissions, change the file-list's
|
||||
* mode based on the local permissions and some heuristics. */
|
||||
if (!preserve_perms) {
|
||||
int exists = statret == 0
|
||||
&& S_ISDIR(st.st_mode) == S_ISDIR(file->mode);
|
||||
file->mode = dest_mode(file->mode, st.st_mode, exists);
|
||||
}
|
||||
|
||||
if (S_ISDIR(file->mode)) {
|
||||
|
||||
10
receiver.c
10
receiver.c
@@ -603,11 +603,11 @@ int recv_files(int f_in, struct file_list *flist, char *local_name)
|
||||
fd1 = -1;
|
||||
}
|
||||
|
||||
if (fd1 != -1 && !preserve_perms) {
|
||||
/* if the file exists already and we aren't preserving
|
||||
* permissions then act as though the remote end sent
|
||||
* us the file permissions we already have */
|
||||
file->mode = st.st_mode;
|
||||
/* If we're not preserving permissions, change the file-list's
|
||||
* mode based on the local permissions and some heuristics. */
|
||||
if (!preserve_perms) {
|
||||
int exists = fd1 != -1;
|
||||
file->mode = dest_mode(file->mode, st.st_mode, exists);
|
||||
}
|
||||
|
||||
/* We now check to see if we are writing file "inplace" */
|
||||
|
||||
Reference in New Issue
Block a user