X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/417b59997fd644131be64a97f4a9d186f182bf1e..a897af2cdeb9467e46133640c5feb0a83b57da8e:/exclude.c diff --git a/exclude.c b/exclude.c index 1dfa0f29..351c6e4b 100644 --- a/exclude.c +++ b/exclude.c @@ -27,6 +27,7 @@ #include "rsync.h" extern int verbose; +extern int am_server; extern int eol_nulls; extern int list_only; extern int recurse; @@ -709,7 +710,7 @@ static const char *get_filter_tok(const char *p, int xflags, cp++; len = cp - s; } else - len = strlen(s); + len = strlen((char*)s); if (mflags & MATCHFLG_CLEAR_LIST) { if (!(xflags & (XFLG_DEF_INCLUDE | XFLG_DEF_EXCLUDE)) && len) { @@ -817,9 +818,17 @@ void add_filter_file(struct filter_list_struct *listp, const char *fname, if (!fname || !*fname) return; - if (*fname != '-' || fname[1]) - fp = fopen(fname, "rb"); - else + if (*fname != '-' || fname[1] || am_server) { + if (server_filter_list.head) { + strlcpy(line, fname, sizeof line); + clean_fname(line, 1); + if (check_filter(&server_filter_list, line, 0) < 0) + fp = NULL; + else + fp = fopen(line, "rb"); + } else + fp = fopen(fname, "rb"); + } else fp = stdin; if (!fp) { if (xflags & XFLG_FATAL_ERRORS) {