X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/e7c67065c060d500eba8d073da9568db2c658aad..8c449e62853b141799a80045820b4d07653cefd0:/exclude.c diff --git a/exclude.c b/exclude.c index eb2353c0..fdb5c776 100644 --- a/exclude.c +++ b/exclude.c @@ -298,7 +298,7 @@ static char *parse_merge_name(const char *merge_file, unsigned int *len_ptr, strlcpy(to, merge_file, *len_ptr + 1); merge_file = to; } - if (!sanitize_path(fn, merge_file, r, dirbuf_depth)) { + if (!sanitize_path(fn, merge_file, r, dirbuf_depth, NULL)) { rprintf(FERROR, "merge-file name overflows: %s\n", merge_file); return NULL; @@ -500,6 +500,8 @@ static int rule_matches(char *name, struct filter_struct *ex, int name_is_dir) char *p, *pattern = ex->pattern; const char *strings[16]; /* more than enough */ + if (*name == '/') + name++; if (!*name) return 0; @@ -531,8 +533,6 @@ static int rule_matches(char *name, struct filter_struct *ex, int name_is_dir) if (*pattern == '/') { anchored_match = 1; pattern++; - if (strings[0][0] == '/') - strings[0]++; } if (!anchored_match && ex->u.slash_cnt @@ -861,7 +861,7 @@ static char default_cvsignore[] = " *.a *.olb *.o *.obj *.so *.exe" " *.Z *.elc *.ln core" /* The rest we added to suit ourself. */ - " .svn/"; + " .svn/ .bzr/"; static void get_cvs_excludes(uint32 mflags) {