X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/e5daa2731a82e643f1fbc292a29b82df750820fa..85aecef6c346c6cd76e0108be257a85783cde17d:/exclude.c diff --git a/exclude.c b/exclude.c index 35a64b96..48434894 100644 --- a/exclude.c +++ b/exclude.c @@ -34,6 +34,8 @@ extern int list_only; extern int recurse; extern int io_error; extern int local_server; +extern int saw_delete_opt; +extern int saw_delete_excluded_opt; extern int delete_mode; extern int delete_excluded; extern int cvs_exclude; @@ -302,7 +304,7 @@ static char *parse_merge_name(const char *merge_file, unsigned int *len_ptr, } 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 { @@ -315,8 +317,7 @@ static char *parse_merge_name(const char *merge_file, unsigned int *len_ptr, 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); @@ -985,7 +986,7 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname, 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]"); } @@ -994,7 +995,7 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname, rsyserr(FERROR, errno, "failed to open %sclude file %s", mflags & MATCHFLG_INCLUDE ? "in" : "ex", - safe_fname(fname)); + fname); exit_cleanup(RERR_FILEIO); } return; @@ -1006,8 +1007,10 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname, 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)) @@ -1178,8 +1181,8 @@ void recv_filter_list(int f_in) { 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 = saw_delete_opt + && (!saw_delete_excluded_opt || protocol_version >= 29); unsigned int len; if (!local_server && (am_sender || receiver_wants_list)) {