extern int recurse;
extern int io_error;
extern int local_server;
+extern int saw_delete_opt;
+extern int saw_delete_excluded_opt;
+extern int prune_empty_dirs;
extern int delete_mode;
extern int delete_excluded;
extern int cvs_exclude;
}
if (!sanitize_path(fn, merge_file, r, dirbuf_depth)) {
rprintf(FERROR, "merge-file name overflows: %s\n",
- safe_fname(merge_file));
+ merge_file);
return NULL;
}
} else {
goto done;
if (dirbuf_len + fn_len >= MAXPATHLEN) {
- rprintf(FERROR, "merge-file name overflows: %s\n",
- safe_fname(fn));
+ rprintf(FERROR, "merge-file name overflows: %s\n", fn);
return NULL;
}
memcpy(buf, dirbuf + prefix_skip, dirbuf_len - prefix_skip);
* case we add it back in here. */
if (verbose >= 2) {
- rprintf(FINFO, "[%s] %scluding %s %s because of pattern %s%s%s\n",
- who_am_i(),
- ent->match_flags & MATCHFLG_INCLUDE ? "in" : "ex",
- name_is_dir ? "directory" : "file", name, ent->pattern,
- ent->match_flags & MATCHFLG_DIRECTORY ? "/" : "", type);
+ static char *actions[2][2]
+ = { {"show", "hid"}, {"risk", "protect"} };
+ const char *w = who_am_i();
+ rprintf(FINFO, "[%s] %sing %s %s because of pattern %s%s%s\n",
+ w, actions[*w!='s'][!(ent->match_flags&MATCHFLG_INCLUDE)],
+ name_is_dir ? "directory" : "file", name, ent->pattern,
+ ent->match_flags & MATCHFLG_DIRECTORY ? "/" : "", type);
}
}
if (verbose > 2) {
rprintf(FINFO, "[%s] parse_filter_file(%s,%x,%x)%s\n",
- who_am_i(), safe_fname(fname), mflags, xflags,
+ who_am_i(), fname, mflags, xflags,
fp ? "" : " [not found]");
}
rsyserr(FERROR, errno,
"failed to open %sclude file %s",
mflags & MATCHFLG_INCLUDE ? "in" : "ex",
- safe_fname(fname));
+ fname);
exit_cleanup(RERR_FILEIO);
}
return;
int ch, overflow = 0;
while (1) {
if ((ch = getc(fp)) == EOF) {
- if (ferror(fp) && errno == EINTR)
+ if (ferror(fp) && errno == EINTR) {
+ clearerr(fp);
continue;
+ }
break;
}
if (word_split && isspace(ch))
/* This is only called by the client. */
void send_filter_list(int f_out)
{
- int receiver_wants_list = delete_mode
- && (!delete_excluded || protocol_version >= 29);
+ int receiver_wants_list = prune_empty_dirs
+ || (delete_mode && (!delete_excluded || protocol_version >= 29));
if (local_server || (am_sender && !receiver_wants_list))
f_out = -1;
{
char line[BIGPATHBUFLEN];
int xflags = protocol_version >= 29 ? 0 : XFLG_OLD_PREFIXES;
- int receiver_wants_list = delete_mode
- && (!delete_excluded || protocol_version >= 29);
+ int receiver_wants_list = prune_empty_dirs
+ || (saw_delete_opt
+ && (!saw_delete_excluded_opt || protocol_version >= 29));
unsigned int len;
if (!local_server && (am_sender || receiver_wants_list)) {