Add a CAUTION message to --debug=FILTER for trailing whitespace.

This commit is contained in:
Wayne Davison
2022-01-27 08:31:24 -08:00
parent 48e7005554
commit 81f71f6f29
3 changed files with 20 additions and 5 deletions

View File

@@ -138,6 +138,9 @@
- 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.

View File

@@ -152,13 +152,17 @@ static void add_rule(filter_rule_list *listp, const char *pat, unsigned int pat_
{
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

View File

@@ -3723,6 +3723,14 @@ first matching pattern is acted on: if it is an exclude pattern, then that file
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: