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. */
int64 l;
int b = BLOCKSUM_BIAS;
for (l = len; l >>= 1; b += 2) {}
- for (c = blength; c >>= 1 && b; b--) {}
+ for (c = blength; (c >>= 1) && b; b--) {}
/* add a bit, subtract rollsum, round up. */
s2length = (b + 1 - 32 + 7) / 8; /* --optimize in compiler-- */
s2length = MAX(s2length, csum_length);
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
}
}
if (set_file_attrs(fname, file, statret ? NULL : &st, 0)
- && verbose && code && f_out != -1)
+ && verbose && code != FNONE && f_out != -1)
rprintf(code, "%s/\n", fname);
if (delete_during && f_out != -1 && !phase && dry_run < 2
&& (file->flags & FLAG_DEL_HERE))
itemizing,
code);
}
- if (remove_sender_files == 1)
+ if (remove_source_files == 1)
goto return_with_success;
return;
}
#endif
if (!copy_dest)
return;
- itemizing = code = 0;
+ itemizing = 0;
+ code = FNONE;
}
}
if (preserve_hard_links && file->link_u.links
itemize(file, ndx, statret, &st,
ITEM_LOCAL_CHANGE, 0, NULL);
}
- if (code && verbose) {
+ if (code != FNONE && verbose) {
rprintf(code, "%s -> %s\n", fname,
file->u.link);
}
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
#endif
if (!copy_dest)
return;
- itemizing = code = 0;
+ itemizing = 0;
+ code = FNONE;
}
}
if (statret != 0
itemize(file, ndx, statret, &st,
ITEM_LOCAL_CHANGE, 0, NULL);
}
- if (code && verbose)
+ if (code != FNONE && verbose)
rprintf(code, "%s\n", fname);
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;
}
} 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) {
if (protocol_version >= 29) {
itemizing = 1;
maybe_ATTRS_REPORT = stdout_format_has_i ? 0 : ATTRS_REPORT;
- code = logfile_format_has_i ? 0 : FLOG;
+ code = logfile_format_has_i ? FNONE : FLOG;
} else if (am_daemon) {
itemizing = logfile_format_has_i && do_xfers;
maybe_ATTRS_REPORT = ATTRS_REPORT;
} else if (!am_server) {
itemizing = stdout_format_has_i;
maybe_ATTRS_REPORT = stdout_format_has_i ? 0 : ATTRS_REPORT;
- code = itemizing ? 0 : FINFO;
+ code = itemizing ? FNONE : FINFO;
} else {
itemizing = 0;
maybe_ATTRS_REPORT = ATTRS_REPORT;