X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/19c14f987e69bc23ff9ba1d6f292094aafecae17..972a3619c4ea253671e2fe0897f99af897782e26:/exclude.c diff --git a/exclude.c b/exclude.c index 15fa4f60..ae9f8b17 100644 --- a/exclude.c +++ b/exclude.c @@ -23,6 +23,7 @@ #include "rsync.h" extern int verbose; +extern int delete_mode; static struct exclude_struct **exclude_list; @@ -41,7 +42,7 @@ int send_included_file_names(int f,struct file_list *flist) int n; char *p; - if (!only_included_files || (exclude_the_rest == NULL)) + if (!only_included_files || (exclude_the_rest == NULL) || delete_mode) return 0; if (verbose > 1) { @@ -100,6 +101,7 @@ static struct exclude_struct *make_exclude(char *pattern, int include) only_included_files = 0; } ret->regular_exp = 1; + ret->fnmatch_flags = strstr(pattern, "**") ? 0 : FNM_PATHNAME; } else if (!ret->include) { only_included_files = 0; } @@ -143,7 +145,7 @@ static int check_one_exclude(char *name,struct exclude_struct *ex, } if (ex->regular_exp) { - if (fnmatch(pattern, name, 0) == 0) + if (fnmatch(pattern, name, ex->fnmatch_flags) == 0) return 1; } else { int l1 = strlen(name);