extern int flist_eof;
extern int allowed_lull;
extern int sock_f_out;
-extern int ignore_timeout;
extern int protocol_version;
extern int file_total;
extern int fuzzy_basis;
extern int force_delete;
extern int one_file_system;
extern int skipped_deletes;
-extern struct stats stats;
extern dev_t filesystem_dev;
extern mode_t orig_umask;
extern uid_t our_uid;
rprintf(FINFO, "delete_in_dir(%s)\n", fbuf);
if (allowed_lull)
- maybe_send_keepalive();
+ maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH);
if (io_error && !ignore_errors) {
if (already_warned)
if (safe_symlinks && unsafe_symlink(sl, fname)) {
if (INFO_GTE(NAME, 1)) {
if (solo_file)
+ /* fname contains the destination path, but we
+ * want to report the source path. */
fname = f_name(file, NULL);
rprintf(FINFO,
- "ignoring unsafe symlink %s -> \"%s\"\n",
- full_fname(fname), sl);
+ "ignoring unsafe symlink \"%s\" -> \"%s\"\n",
+ fname, sl);
}
return;
}
static int counter = 0;
struct file_struct *file;
char *fname;
+ BOOL fix_dir_perms;
int i, start, end;
if (ndx < 0) {
rprintf(FINFO, "touch_up_dirs: %s (%d)\n",
NS(fname), i);
}
+ /* Be sure not to retouch permissions with --fake-super. */
+ fix_dir_perms = !am_root && !(file->mode & S_IWUSR);
if (!F_IS_ACTIVE(file) || file->flags & FLAG_MISSING_DIR
- || (!need_retouch_dir_times && file->mode & S_IWUSR))
+ || !(need_retouch_dir_times || fix_dir_perms))
continue;
fname = f_name(file, NULL);
- if (!(file->mode & S_IWUSR))
+ if (fix_dir_perms)
do_chmod(fname, file->mode);
if (need_retouch_dir_times) {
STRUCT_STAT st;
}
if (counter >= loopchk_limit) {
if (allowed_lull)
- maybe_send_keepalive();
+ maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH);
else
maybe_flush_socket(0);
counter = 0;
: "enabled");
}
- /* Since we often fill up the outgoing socket and then just sit around
- * waiting for the other 2 processes to do their thing, we don't want
- * to exit on a timeout. If the data stops flowing, the receiver will
- * notice that and let us know via the redo pipe (or its closing). */
- ignore_timeout = 1;
-
dflt_perms = (ACCESSPERMS & ~orig_umask);
do {
if (i + cur_flist->ndx_start >= next_loopchk) {
if (allowed_lull)
- maybe_send_keepalive();
+ maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH);
else
maybe_flush_socket(0);
next_loopchk += loopchk_limit;