X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ce66f41791ab9e3c684a2089da28f23943d720b8..778124188914358b2a1d4e0046401acf6551ea76:/flist.c diff --git a/flist.c b/flist.c index 7d01c9c5..860bf834 100644 --- a/flist.c +++ b/flist.c @@ -794,7 +794,7 @@ static struct file_struct *recv_file_entry(struct file_list *flist, if (!(xflags & XMIT_SAME_MODE)) mode = from_wire_mode(read_int(f)); - if (chmod_modes && !S_ISLNK(mode)) + if (chmod_modes && !S_ISLNK(mode) && mode) mode = tweak_mode(mode, chmod_modes); if (preserve_uid && !(xflags & XMIT_SAME_UID)) { @@ -1372,7 +1372,7 @@ static struct file_struct *send_file_name(int f, struct file_list *flist, if (!file) return NULL; - if (chmod_modes && !S_ISLNK(file->mode)) + if (chmod_modes && !S_ISLNK(file->mode) && file->mode) file->mode = tweak_mode(file->mode, chmod_modes); if (f >= 0) { @@ -2189,7 +2189,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) } /* A dot-dir should not be excluded! */ - if (name_type != DOTDIR_NAME + if (name_type != DOTDIR_NAME && st.st_mode != 0 && is_excluded(fbuf, S_ISDIR(st.st_mode) != 0, ALL_FILTERS)) continue;