The change a couple days ago to create files initially without group and
[rsync/rsync.git] / exclude.c
index 15fa4f6..ae9f8b1 100644 (file)
--- 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);