filesystem_dev = st.st_dev;
else if (st.st_dev != filesystem_dev) {
if (one_file_system > 1) {
- if (verbose > 2) {
+ if (verbose > 1) {
rprintf(FINFO,
- "skipping mount-point dir %s\n",
- thisname);
+ "[%s] skipping mount-point dir %s\n",
+ who_am_i(), thisname);
}
return NULL;
}
{
struct file_struct *file;
#if defined SUPPORT_ACLS || defined SUPPORT_XATTRS
- statx sx;
+ stat_x sx;
#endif
file = make_file(fname, flist, stp, flags, filter_level);
dir_flist->files[dir_flist->used++] = file;
dir_cnt--;
- if (file->flags & FLAG_MOUNT_DIR)
- continue;
-
if (dp)
DIR_NEXT_SIBLING(dp) = dir_flist->used - 1;
else if (parent_dp)
change_local_filter_dir(fbuf, dlen, send_dir_depth);
- if (file->flags & FLAG_XFER_DIR)
+ if (BITS_SETnUNSET(file->flags, FLAG_XFER_DIR, FLAG_MOUNT_DIR))
send_directory(f, flist, fbuf, dlen, flags);
if (!relative_paths)
if (is_dot_dir) {
STRUCT_STAT st;
- if (link_stat(fbuf, &st, copy_dirlinks) != 0) {
+ if (link_stat(fbuf, &st, 1) != 0) {
io_error |= IOERR_GENERAL;
rsyserr(FERROR, errno, "link_stat %s failed",
full_fname(fbuf));
if (fn != fbuf)
memmove(fbuf, fn, len + 1);
- if (link_stat(fbuf, &st, copy_dirlinks) != 0) {
+ if (link_stat(fbuf, &st, copy_dirlinks || is_dot_dir) != 0) {
io_error |= IOERR_GENERAL;
rsyserr(FERROR, errno, "link_stat %s failed",
full_fname(fbuf));
else {
if (am_sender)
file->flags |= FLAG_DUPLICATE;
+ else /* Make sure we don't lose vital flags. */
+ fp->flags |= file->flags & (FLAG_TOP_DIR|FLAG_XFER_DIR);
keep = j, drop = i;
}
} else
"removing duplicate name %s from file list (%d)\n",
f_name(file, fbuf), drop + flist->ndx_start);
}
- /* Make sure we don't lose track of a user-specified
- * top directory. */
- flist->sorted[keep]->flags |= flist->sorted[drop]->flags
- & (FLAG_TOP_DIR|FLAG_XFER_DIR);
-
clear_file(flist->sorted[drop]);
}