X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/21cddef2b460098f5289b9cdbd592bf8f0f9e759..1a2e41af941573e69c02370329afe0192b61f213:/rsync.c diff --git a/rsync.c b/rsync.c index 2c026a2d..db7abcc5 100644 --- a/rsync.c +++ b/rsync.c @@ -45,6 +45,7 @@ extern int gid_ndx; extern int inc_recurse; extern int inplace; extern int flist_eof; +extern int file_old_total; extern int msgs2stderr; extern int keep_dirlinks; extern int make_backups; @@ -313,7 +314,15 @@ int read_ndx_and_attrs(int f_in, int *iflag_ptr, uchar *type_ptr, goto read_loop; } - cur_flist = flist_for_ndx(ndx, "read_ndx_and_attrs"); + flist = flist_for_ndx(ndx, "read_ndx_and_attrs"); + if (flist != cur_flist) { + cur_flist = flist; + if (am_sender) { + file_old_total = cur_flist->used; + for (flist = first_flist; flist != cur_flist; flist = flist->next) + file_old_total += flist->used; + } + } if (iflags & ITEM_BASIS_TYPE_FOLLOWS) fnamecmp_type = read_byte(f_in); @@ -426,7 +435,7 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp, flags |= ATTRS_SKIP_MTIME; if (!(flags & ATTRS_SKIP_MTIME) && cmp_time(sxp->st.st_mtime, file->modtime) != 0) { - int ret = set_modtime(fname, file->modtime, sxp->st.st_mode); + int ret = set_modtime(fname, file->modtime, F_MOD_NSEC(file), sxp->st.st_mode); if (ret < 0) { rsyserr(FERROR_XFER, errno, "failed to set times on %s", full_fname(fname));