X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/cda2ae84b3b0f78387c5937094b4f5525c92fc19..b17bc22bb3fc0c64092f31a31acbe21947c775ab:/receiver.c diff --git a/receiver.c b/receiver.c index 49d1bf22..96215789 100644 --- a/receiver.c +++ b/receiver.c @@ -303,6 +303,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) int phase=0; int recv_ok; extern struct stats stats; + extern int preserve_perms; struct stats initial_stats; if (verbose > 2) { @@ -383,6 +384,13 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) continue; } + if (fd1 != -1 && !preserve_perms) { + /* if the file exists already and we aren't perserving + presmissions then act as though the remote end sent + us the file permissions we already have */ + file->mode = st.st_mode; + } + if (fd1 != -1 && st.st_size > 0) { buf = map_file(fd1,st.st_size); if (verbose > 2)