X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/11b02d927f2d809aeade01768b16b690220c1049..71daa07fb1c791c0f5eba3fc1b615df3a46441fc:/syscall.c diff --git a/syscall.c b/syscall.c index 0dfcaa01..39554e95 100644 --- a/syscall.c +++ b/syscall.c @@ -34,6 +34,7 @@ extern int am_root; extern int read_only; extern int list_only; extern int preserve_perms; +extern int preserve_executability; #define RETURN_ERROR_IF(x,e) \ do { \ @@ -167,7 +168,7 @@ int do_chmod(const char *path, mode_t mode) #endif } else code = chmod(path, mode & CHMOD_BITS); - if (code != 0 && preserve_perms) + if (code != 0 && (preserve_perms || preserve_executability)) return code; return 0; } @@ -211,6 +212,7 @@ int do_mkstemp(char *template, mode_t perms) { RETURN_ERROR_IF(dry_run, 0); RETURN_ERROR_IF(read_only, EROFS); + perms |= S_IWUSR; #if defined HAVE_SECURE_MKSTEMP && defined HAVE_FCHMOD && (!defined HAVE_OPEN64 || defined HAVE_MKSTEMP64) {