return;
}
- /* 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)) {
/* The file to be received is a directory, so we need
* to prepare appropriately. If there is already a
statret = -1;
new_root_dir = 0;
}
+ if (!preserve_perms) { /* See comment in non-dir code below. */
+ file->mode = dest_mode(file->mode, st.st_mode,
+ statret == 0);
+ }
if (statret != 0 && basis_dir[0] != NULL) {
int j = try_dests_non(file, fname, ndx, fnamecmpbuf, &st,
itemizing, code);
return;
}
+ /* 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);
+ file->mode = dest_mode(file->mode, st.st_mode, exists);
+ }
+
#ifdef SUPPORT_HARD_LINKS
if (preserve_hard_links && F_HLINK_NOT_FIRST(file)
&& hard_link_check(file, ndx, fname, statret, &st, itemizing, code))