Adding filter-attribute-mods patch; updating patches.
[rsync/rsync-patches.git] / cvs-entries.diff
index 436ede8..bfe357d 100644 (file)
@@ -8,20 +8,20 @@ To use this patch, run these commands for a successful build:
     ./configure                                 (optional if already run)
     make
 
+based-on: 181c9faf928faad08ef095f4667afe460ec3bef6
 diff --git a/exclude.c b/exclude.c
-index 5fa6e00..60e557d 100644
 --- a/exclude.c
 +++ b/exclude.c
-@@ -275,6 +275,8 @@ static void add_rule(struct filter_list_struct *listp, const char *pat,
-               if (!(lp = new_array(struct filter_list_struct, 1)))
+@@ -267,6 +267,8 @@ static void add_rule(filter_rule_list *listp, const char *pat, unsigned int pat_
+               if (!(lp = new_array(filter_rule_list, 1)))
                        out_of_memory("add_rule");
                lp->head = lp->tail = lp->parent_dirscan_head = NULL;
 +              if (mflags & MATCHFLG_CVS_IGNORE)
 +                      cp = "CVS";
                if (asprintf(&lp->debug_type, " [per-dir %s]", cp) < 0)
                        out_of_memory("add_rule");
-               ret->u.mergelist = lp;
-@@ -536,6 +538,14 @@ void *push_local_filters(const char *dir, unsigned int dirlen)
+               rule->u.mergelist = lp;
+@@ -526,6 +528,14 @@ void *push_local_filters(const char *dir, unsigned int dirlen)
                                set_filter_dir(dir, dirlen);
                }
  
@@ -35,16 +35,16 @@ index 5fa6e00..60e557d 100644
 +              }
                if (strlcpy(dirbuf + dirbuf_len, ex->pattern,
                    MAXPATHLEN - dirbuf_len) < MAXPATHLEN - dirbuf_len) {
-                       parse_filter_file(lp, dirbuf, ex->match_flags,
-@@ -1122,6 +1132,7 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
+                       parse_filter_file(lp, dirbuf, ex,
+@@ -1151,6 +1161,7 @@ void parse_filter_file(filter_rule_list *listp, const char *fname, const filter_
        char line[BIGPATHBUFLEN];
        char *eob = line + sizeof line - 1;
-       int word_split = mflags & MATCHFLG_WORD_SPLIT;
+       BOOL word_split = (template->rflags & FILTRULE_WORD_SPLIT) != 0;
 +      int slash_parse = xflags & XFLG_CVS_ENTRIES ? 1 : 0;
  
        if (!fname || !*fname)
                return;
-@@ -1168,6 +1179,24 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
+@@ -1197,6 +1208,24 @@ void parse_filter_file(filter_rule_list *listp, const char *fname, const filter_
                                }
                                break;
                        }
@@ -69,7 +69,7 @@ index 5fa6e00..60e557d 100644
                        if (word_split && isspace(ch))
                                break;
                        if (eol_nulls? !ch : (ch == '\n' || ch == '\r'))
-@@ -1177,13 +1206,15 @@ void parse_filter_file(struct filter_list_struct *listp, const char *fname,
+@@ -1206,13 +1235,14 @@ void parse_filter_file(filter_rule_list *listp, const char *fname, const filter_
                        else
                                overflow = 1;
                }
@@ -81,13 +81,11 @@ index 5fa6e00..60e557d 100644
                *s = '\0';
                /* Skip an empty token and (when line parsing) comments. */
 -              if (*line && (word_split || (*line != ';' && *line != '#')))
-+              if (*line && (word_split || slash_parse
-+                         || (*line != ';' && *line != '#')))
-                       parse_rule(listp, line, mflags, xflags);
++              if (*line && (word_split || slash_parse || (*line != ';' && *line != '#')))
+                       parse_filter_str(listp, line, template, xflags);
                if (ch == EOF)
                        break;
 diff --git a/rsync.h b/rsync.h
-index be7cf8a..6605092 100644
 --- a/rsync.h
 +++ b/rsync.h
 @@ -152,6 +152,7 @@
@@ -99,7 +97,6 @@ index be7cf8a..6605092 100644
  #define ATTRS_REPORT          (1<<0)
  #define ATTRS_SKIP_MTIME      (1<<1)
 diff --git a/testsuite/exclude.test b/testsuite/exclude.test
-index 099344f..993edcc 100644
 --- a/testsuite/exclude.test
 +++ b/testsuite/exclude.test
 @@ -19,6 +19,7 @@ export CVSIGNORE