diff options
author | Andrew Tridgell <tridge@samba.org> | 1999-10-31 04:28:03 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1999-10-31 04:28:03 +0000 |
commit | 4df9f36841dbdf5fa088a402d0dcdc8a4e0c86a6 (patch) | |
tree | a995e012f8753bdc696065bc6a8e82126c7b1b7e /generator.c | |
parent | 5c9730a46c44e5913a4d4767bd99ec23f2f81073 (diff) | |
download | rsync-4df9f36841dbdf5fa088a402d0dcdc8a4e0c86a6.tar.gz rsync-4df9f36841dbdf5fa088a402d0dcdc8a4e0c86a6.tar.bz2 rsync-4df9f36841dbdf5fa088a402d0dcdc8a4e0c86a6.zip |
solved the problem of not using the right permissions when
preserve_perms is off.
Diffstat (limited to 'generator.c')
-rw-r--r-- | generator.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/generator.c b/generator.c index 8afc8f72..5321d8a2 100644 --- a/generator.c +++ b/generator.c @@ -177,6 +177,7 @@ void recv_generator(char *fname,struct file_list *flist,int i,int f_out) char fnamecmpbuf[MAXPATHLEN]; extern char *compare_dest; extern int list_only; + extern int preserve_perms; if (list_only) return; @@ -185,6 +186,15 @@ void recv_generator(char *fname,struct file_list *flist,int i,int f_out) statret = link_stat(fname,&st); + if (statret == 0 && + !preserve_perms && + (S_ISDIR(st.st_mode) == S_ISDIR(file->mode))) { + /* 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 (S_ISDIR(file->mode)) { if (dry_run) return; if (statret == 0 && !S_ISDIR(st.st_mode)) { |