When permissions aren't being preserved, set them via the new

dest_mode() function.
This commit is contained in:
Wayne Davison
2006-01-31 02:30:09 +00:00
parent 860dcf68ad
commit a9d6e6fcac
2 changed files with 11 additions and 12 deletions

View File

@@ -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)) {

View File

@@ -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" */