# endif
}
-# ifdef ICONV_OPTION
-
/* This function converts the characters in the "in" xbuf into characters
* in the "out" xbuf. The "len" of the "in" xbuf is used starting from its
* "pos". The "size" of the "out" xbuf restricts how many characters can be
return errno ? -1 : 0;
}
-# endif
#endif
int read_ndx_and_attrs(int f_in, int *iflag_ptr, uchar *type_ptr,
int len, iflags = 0;
struct file_list *flist;
uchar fnamecmp_type = FNAMECMP_FNAME;
- int ndx;
+ int ndx, save_verbose = verbose;
read_loop:
while (1) {
}
/* Send everything read from f_in to msg_fd_out. */
- send_msg_int(MSG_FLIST, ndx);
- start_flist_forward(f_in);
if (verbose > 3) {
rprintf(FINFO, "[%s] receiving flist for dir %d\n",
who_am_i(), ndx);
}
+ verbose = 0;
+ send_msg_int(MSG_FLIST, ndx);
+ start_flist_forward(f_in);
flist = recv_file_list(f_in);
flist->parent_ndx = ndx;
stop_flist_forward();
+ verbose = save_verbose;
}
iflags = protocol_version >= 29 ? read_shortint(f_in)
invalid_ndx:
rprintf(FERROR,
"Invalid file index: %d (%d - %d) with iflags %x [%s]\n",
- ndx, first_flist->ndx_start - 1, first_flist->prev->ndx_end,
+ ndx, first_flist ? first_flist->ndx_start - 1 : -1,
+ first_flist ? first_flist->prev->ndx_end : -1,
iflags, who_am_i());
exit_cleanup(RERR_PROTOCOL);
}
if (dry_run)
return 1;
if (link_stat(fname, &sx2.st, 0) < 0) {
- rsyserr(FERROR, errno, "stat %s failed",
+ rsyserr(FERROR_XFER, errno, "stat %s failed",
full_fname(fname));
return 0;
}
new_mode |= S_ISGID;
}
+ if (daemon_chmod_modes && !S_ISLNK(new_mode))
+ new_mode = tweak_mode(new_mode, daemon_chmod_modes);
+
#ifdef SUPPORT_ACLS
if (preserve_acls && !S_ISLNK(file->mode) && !ACL_READY(*sxp))
get_acl(fname, sxp);
#endif
#ifdef SUPPORT_XATTRS
+ if (am_root < 0)
+ set_stat_xattr(fname, file, new_mode);
if (preserve_xattrs && fnamecmp)
set_xattr(fname, file, fnamecmp, sxp);
- if (am_root < 0)
- set_stat_xattr(fname, file);
#endif
if (!preserve_times || (S_ISDIR(sxp->st.st_mode) && preserve_times == 1))
&& cmp_time(sxp->st.st_mtime, file->modtime) != 0) {
int ret = set_modtime(fname, file->modtime, sxp->st.st_mode);
if (ret < 0) {
- rsyserr(FERROR, errno, "failed to set times on %s",
+ rsyserr(FERROR_XFER, errno, "failed to set times on %s",
full_fname(fname));
goto cleanup;
}
change_gid ? (gid_t)F_GROUP(file) : sxp->st.st_gid) != 0) {
/* shouldn't have attempted to change uid or gid
* unless have the privilege */
- rsyserr(FERROR, errno, "%s %s failed",
+ rsyserr(FERROR_XFER, errno, "%s %s failed",
change_uid ? "chown" : "chgrp",
full_fname(fname));
goto cleanup;
updated = 1;
}
- if (daemon_chmod_modes && !S_ISLNK(new_mode))
- new_mode = tweak_mode(new_mode, daemon_chmod_modes);
-
#ifdef SUPPORT_ACLS
/* It's OK to call set_acl() now, even for a dir, as the generator
* will enable owner-writability using chmod, if necessary.
if (!BITS_EQUAL(sxp->st.st_mode, new_mode, CHMOD_BITS)) {
int ret = am_root < 0 ? 0 : do_chmod(fname, new_mode);
if (ret < 0) {
- rsyserr(FERROR, errno,
+ rsyserr(FERROR_XFER, errno,
"failed to set permissions on %s",
full_fname(fname));
goto cleanup;
ret = robust_rename(fnametmp, fname, partialptr,
file->mode & INITACCESSPERMS);
if (ret < 0) {
- rsyserr(FERROR, errno, "%s %s -> \"%s\"",
+ rsyserr(FERROR_XFER, errno, "%s %s -> \"%s\"",
ret == -2 ? "copy" : "rename",
full_fname(fnametmp), fname);
do_unlink(fnametmp);
if (partialptr) {
if (do_rename(fnametmp, fname) < 0) {
- rsyserr(FERROR, errno, "rename %s -> \"%s\"",
+ rsyserr(FERROR_XFER, errno, "rename %s -> \"%s\"",
full_fname(fnametmp), fname);
} else
handle_partial_dir(partialptr, PDIR_DELETE);