extern int keep_dirlinks;
extern int preserve_links;
extern int preserve_hard_links;
extern int keep_dirlinks;
extern int preserve_links;
extern int preserve_hard_links;
extern int copy_unsafe_links;
extern int protocol_version;
extern int sanitize_paths;
extern int copy_unsafe_links;
extern int protocol_version;
extern int sanitize_paths;
#ifdef SUPPORT_LINKS
if (preserve_links && S_ISLNK(f->mode)) {
rprintf(FINFO, "%s %11.0f %s %s -> %s\n",
#ifdef SUPPORT_LINKS
if (preserve_links && S_ISLNK(f->mode)) {
rprintf(FINFO, "%s %11.0f %s %s -> %s\n",
(double)f->length, timestring(f->modtime),
f_name(f, NULL), f->u.link);
} else
#endif
{
rprintf(FINFO, "%s %11.0f %s %s\n",
(double)f->length, timestring(f->modtime),
f_name(f, NULL), f->u.link);
} else
#endif
{
rprintf(FINFO, "%s %11.0f %s %s\n",
return -1;
if (S_ISLNK(buffer->st_mode)) {
int l = readlink((char *)path, linkbuf, MAXPATHLEN - 1);
return -1;
if (S_ISLNK(buffer->st_mode)) {
int l = readlink((char *)path, linkbuf, MAXPATHLEN - 1);
io_error |= IOERR_GENERAL;
rsyserr(FERROR, errno, "link_stat %s failed",
full_fname(fbuf));
io_error |= IOERR_GENERAL;
rsyserr(FERROR, errno, "link_stat %s failed",
full_fname(fbuf));
if (fn != p || (*lp && *lp != '/')) {
int save_copy_links = copy_links;
int save_xfer_dirs = xfer_dirs;
if (fn != p || (*lp && *lp != '/')) {
int save_copy_links = copy_links;
int save_xfer_dirs = xfer_dirs;
flags |= read_byte(f) << 8;
file = receive_file_entry(flist, flags, f);
flags |= read_byte(f) << 8;
file = receive_file_entry(flist, flags, f);
memset(file, 0, file_struct_len);
/* In an empty entry, dir.depth is an offset to the next non-empty
* entry. Likewise for length in the opposite direction. We assume
memset(file, 0, file_struct_len);
/* In an empty entry, dir.depth is an offset to the next non-empty
* entry. Likewise for length in the opposite direction. We assume
- * that we're alone for now since flist_find() will collate adjacent
- * items for any entries that are encountered during the find. */
+ * that we're alone for now since flist_find() will adjust the counts
+ * it runs into that aren't up-to-date. */
send_directory(ignore_filter_rules ? -2 : -1, dirlist, dirname, dlen);
send_directory(ignore_filter_rules ? -2 : -1, dirlist, dirname, dlen);