delete_in_dir(flist, fbuf, file);
}
+ if (do_progress && !am_server)
+ rprintf(FINFO, " \r");
}
static int unchanged_attrs(struct file_struct *file, STRUCT_STAT *st)
}
match_level = 0;
statret = -1;
- } else
- set_perms(fname, file, NULL, 0);
+ } else {
+ if (itemizing) {
+ itemize(file, ndx, 0, &st,
+ ITEM_LOCAL_CHANGE, 0,
+ NULL);
+ } else if (verbose && code) {
+ rprintf(code, "%s\n",
+ safe_fname(fname));
+ }
+ set_perms(fname, file, NULL,
+ maybe_PERMS_REPORT);
+ if (preserve_hard_links
+ && file->link_u.links) {
+ hard_link_cluster(file, ndx,
+ itemizing,
+ code);
+ }
+ return;
+ }
} else if (compare_dest || match_level == 1) {
fnamecmp = fnamecmpbuf;
fnamecmp_type = i;
/* We need to ensure that any dirs we create have writeable
* permissions during the time we are putting files within
* them. This is then fixed after the transfer is done. */
- if (!am_root && S_ISDIR(file->mode) && !(file->mode & S_IWUSR)) {
+ if (!am_root && S_ISDIR(file->mode) && !(file->mode & S_IWUSR)
+ && !list_only) {
int mode = file->mode | S_IWUSR; /* user write */
char *fname = local_name ? local_name : fbuf;
if (do_chmod(fname, mode & CHMOD_BITS) < 0) {