do {
#ifdef SUPPORT_HARD_LINKS
- if (inc_recurse && preserve_hard_links)
- match_hard_links(cur_flist);
+ if (preserve_hard_links && inc_recurse) {
+ while (!flist_eof && file_total < FILECNT_LOOKAHEAD/2)
+ wait_for_receiver();
+ }
#endif
+
if (inc_recurse && cur_flist->ndx_start) {
struct file_struct *fp = dir_flist->files[cur_flist->parent_ndx];
f_name(fp, fbuf);
}
flist = recv_file_list(fd);
flist->parent_ndx = IVAL(buf,0);
+#ifdef SUPPORT_HARD_LINKS
+ if (preserve_hard_links)
+ match_hard_links(flist);
+#endif
break;
case MSG_FLIST_EOF:
if (len != 0 || !am_generator || !inc_recurse)
extern char *batch_name;
extern char *password_file;
extern char curr_dir[MAXPATHLEN];
-extern struct file_list *cur_flist;
+extern struct file_list *first_flist;
extern struct filter_list_struct server_filter_list;
int local_server = 0;
#ifdef SUPPORT_HARD_LINKS
if (preserve_hard_links && !inc_recurse)
- match_hard_links(cur_flist);
+ match_hard_links(first_flist);
#endif
if (fd_pair(error_pipe) < 0) {
set_msg_fd_in(error_pipe[0]);
io_start_buffering_in(error_pipe[0]);
+#ifdef SUPPORT_HARD_LINKS
+ if (preserve_hard_links && inc_recurse) {
+ struct file_list *flist;
+ for (flist = first_flist; flist; flist = flist->next)
+ match_hard_links(flist);
+ }
+#endif
+
generate_files(f_out, local_name);
handle_stats(-1);