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);
j = best_match;
pathjoin(cmpbuf, MAXPATHLEN, basis_dir[j], fname);
if (link_stat(cmpbuf, stp, 0) < 0)
- match_level = 0;
+ return -1;
}
if (match_level == 3 && !copy_dest) {
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))
#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);
+ /* This does not check remove_source_files == 1
+ * because this is one of the items that the old
+ * --remove-sent-files option would remove. */
if (remove_source_files)
goto return_with_success;
}
#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,
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;