extern int delete_after;
extern int module_id;
extern int ignore_errors;
-extern int remove_sender_files;
+extern int remove_source_files;
extern int delay_updates;
extern int update_only;
extern int ignore_existing;
extern int link_dest;
extern int whole_file;
extern int list_only;
+extern int new_root_dir;
extern int read_batch;
extern int safe_symlinks;
extern long block_size; /* "long" because popt can't set an int32. */
char *cmpbuf, STRUCT_STAT *stp, int itemizing,
int maybe_ATTRS_REPORT, enum logcode code)
{
- int save_ignore_times = ignore_times;
int best_match = -1;
int match_level = 0;
int j = 0;
- /* We can't let ignore_times affect the unchanged_file() test in
- * an alternate-dest dir or we will never find any matches. */
- ignore_times = 0;
-
do {
pathjoin(cmpbuf, MAXPATHLEN, basis_dir[j], fname);
if (link_stat(cmpbuf, stp, 0) < 0 || !S_ISREG(stp->st_mode))
break;
} while (basis_dir[++j] != NULL);
- ignore_times = save_ignore_times;
-
if (!match_level)
return -1;
itemizing && verbose > 1,
code) < 0)
goto try_a_copy;
- if (preserve_hard_links && file->link_u.links)
+ if (preserve_hard_links && file->link_u.links) {
+ if (dry_run)
+ file->link_u.links->link_dest_used = j + 1;
hard_link_cluster(file, ndx, itemizing, code);
+ }
} else
#endif
if (itemizing)
char *dn = file->dirname ? file->dirname : ".";
if (parent_dirname != dn && strcmp(parent_dirname, dn) != 0) {
if (relative_paths && !implied_dirs
- && safe_stat(dn, &st) < 0
+ && do_stat(dn, &st) < 0
&& create_directory_path(fname) < 0) {
rsyserr(FERROR, errno,
"recv_generator: mkdir %s failed",
dry_run++;
}
if (itemizing && f_out != -1) {
- itemize(file, ndx, statret, &st,
- statret ? ITEM_LOCAL_CHANGE : 0, 0, NULL);
+ int sr = statret;
+ if (new_root_dir) {
+ if (*fname == '.' && fname[1] == '\0')
+ sr = -1;
+ new_root_dir = 0;
+ }
+ itemize(file, ndx, sr, &st,
+ sr ? ITEM_LOCAL_CHANGE : 0, 0, NULL);
}
if (statret != 0 && do_mkdir(fname,file->mode) < 0 && errno != EEXIST) {
if (!relative_paths || errno != ENOENT
itemizing,
code);
}
- if (remove_sender_files == 1)
+ if (remove_source_files == 1)
goto return_with_success;
return;
}
}
if (preserve_hard_links && file->link_u.links)
hard_link_cluster(file, ndx, itemizing, code);
- if (remove_sender_files)
+ if (remove_source_files)
goto return_with_success;
}
#endif
hard_link_cluster(file, ndx,
itemizing, code);
}
- if (remove_sender_files == 1)
+ if (remove_source_files == 1)
goto return_with_success;
}
} else {
set_file_attrs(fname, file, &st, maybe_ATTRS_REPORT);
if (preserve_hard_links && file->link_u.links)
hard_link_cluster(file, ndx, itemizing, code);
- if (remove_sender_files == 1)
+ if (remove_source_files == 1)
goto return_with_success;
}
return;
int j = try_dests_reg(file, fname, ndx, fnamecmpbuf, &st,
itemizing, maybe_ATTRS_REPORT, code);
if (j == -2) {
- if (remove_sender_files == 1)
+ if (remove_source_files == 1)
goto return_with_success;
return;
}
- if (j != -1) {
+ if (j >= 0) {
fnamecmp = fnamecmpbuf;
fnamecmp_type = j;
statret = 0;
set_file_attrs(fname, file, &st, maybe_ATTRS_REPORT);
if (preserve_hard_links && file->link_u.links)
hard_link_cluster(file, ndx, itemizing, code);
- if (remove_sender_files != 1)
+ if (remove_source_files != 1)
return;
return_with_success:
if (!dry_run) {
rprintf(FINFO, "generating and sending sums for %d\n", ndx);
notify_others:
- if (remove_sender_files && !delay_updates && !phase)
+ if (remove_source_files && !delay_updates && !phase)
increment_active_files(ndx, itemizing, code);
write_int(f_out, ndx);
if (itemizing) {