- More ASM optimizations from Shark64.
+ - Using `--debug=FILTER` now outputs a caution message if a filter rule
+ has trailing whitespace.
+
- Transformed rrsync into a python script with improvements:
- Security has been beefed up.
- The known rsync options were updated to include recent additions.
{
const char *cp;
unsigned int pre_len, suf_len, slash_cnt = 0;
+ char *mention_rule_suffix;
- if (DEBUG_GTE(FILTER, 2)) {
- rprintf(FINFO, "[%s] add_rule(%s%.*s%s)%s\n",
+ if (DEBUG_GTE(FILTER, 1) && pat_len && (pat[pat_len-1] == ' ' || pat[pat_len-1] == '\t'))
+ mention_rule_suffix = " -- CAUTION: trailing whitespace!";
+ else
+ mention_rule_suffix = DEBUG_GTE(FILTER, 2) ? "" : NULL;
+ if (mention_rule_suffix) {
+ rprintf(FINFO, "[%s] add_rule(%s%.*s%s)%s%s\n",
who_am_i(), get_rule_prefix(rule, pat, 0, NULL),
- (int)pat_len, pat,
- (rule->rflags & FILTRULE_DIRECTORY) ? "/" : "",
- listp->debug_type);
+ (int)pat_len, pat, (rule->rflags & FILTRULE_DIRECTORY) ? "/" : "",
+ listp->debug_type, mention_rule_suffix);
}
/* These flags also indicate that we're reading a list that
is skipped; if it is an include pattern then that filename is not skipped; if
no matching pattern is found, then the filename is not skipped.
+Aside: because the interactions of filter rules can be complex, it is useful to
+use the `--debug=FILTER` option if things aren't working they way you expect.
+The level-1 output (the default if no level number is specified) mentions the
+filter rule that is first matched by each file in the transfer. It also warns
+if a filter rule has trailing whitespace. The level-2 output mentions a lot
+more filter events, including the definition of each rule and the handling of
+per-directory filter files.
+
Rsync builds an ordered list of filter rules as specified on the command-line.
Filter rules have the following syntax: