Skip to content

Commit

Permalink
Add a CAUTION message to --debug=FILTER for trailing whitespace.
Browse files Browse the repository at this point in the history
  • Loading branch information
WayneD committed Jan 27, 2022
1 parent 48e7005 commit 81f71f6
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 5 deletions.
3 changes: 3 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
14 changes: 9 additions & 5 deletions exclude.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions rsync.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down

0 comments on commit 81f71f6

Please sign in to comment.