#include "rsync.h"
extern int verbose;
+extern int dry_run;
extern int do_xfers;
extern int am_server;
extern int do_progress;
extern int relative_paths;
extern int preserve_hard_links;
extern int preserve_perms;
+extern int preserve_xattrs;
extern int basis_dir_cnt;
extern int make_backups;
extern int cleanup_got_literal;
static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
- char *fname, int fd, OFF_T total_size)
+ const char *fname, int fd, OFF_T total_size)
{
static char file_sum1[MAX_DIGEST_LEN];
static char file_sum2[MAX_DIGEST_LEN];
cleanup_disable();
/* This call also sets cur_flist. */
- ndx = read_ndx_and_attrs(f_in, -1, &iflags,
- &fnamecmp_type, xname, &xlen);
+ ndx = read_ndx_and_attrs(f_in, &iflags, &fnamecmp_type,
+ xname, &xlen);
if (ndx == NDX_DONE) {
if (inc_recurse && first_flist) {
flist_free(first_flist);
rprintf(FINFO, "recv_files phase=%d\n", phase);
if (phase == 2 && delay_updates)
handle_delayed_updates(local_name);
- send_msg(MSG_DONE, "", 0);
+ send_msg(MSG_DONE, "", 0, 0);
continue;
}
if (verbose > 2)
rprintf(FINFO, "recv_files(%s)\n", fname);
+#ifdef SUPPORT_XATTRS
+ if (iflags & ITEM_REPORT_XATTR && !dry_run)
+ recv_xattr_request(file, f_in);
+#endif
+
if (!(iflags & ITEM_TRANSFER)) {
maybe_log_item(file, iflags, itemizing, xname);
+#ifdef SUPPORT_XATTRS
+ if (preserve_xattrs && iflags & ITEM_REPORT_XATTR && !dry_run)
+ set_file_attrs(fname, file, NULL, fname, 0);
+#endif
continue;
}
if (phase == 2) {
"(Skipping batched update for \"%s\")\n",
fname);
discard_receive_data(f_in, F_LENGTH(file));
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
next_gen_ndx = -1;
full_fname(fnamecmp));
discard_receive_data(f_in, F_LENGTH(file));
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
full_fname(fnamecmp));
discard_receive_data(f_in, F_LENGTH(file));
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
} else {
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
temp_copy_name = NULL;
else
temp_copy_name = partialptr;
- finish_transfer(fname, fnametmp, temp_copy_name,
- file, recv_ok, 1);
+ finish_transfer(fname, fnametmp, fnamecmp,
+ temp_copy_name, file, recv_ok, 1);
if (fnamecmp == partialptr) {
do_unlink(partialptr);
handle_partial_dir(partialptr, PDIR_DELETE);
}
} else if (keep_partial && partialptr
&& handle_partial_dir(partialptr, PDIR_CREATE)) {
- finish_transfer(partialptr, fnametmp, NULL,
+ finish_transfer(partialptr, fnametmp, fnamecmp, NULL,
file, recv_ok, !partial_dir);
if (delay_updates && recv_ok) {
bitbag_set_bit(delayed_bits, ndx);