The branch, master has been updated via 7a2dbf71 Make the implied-arg adding for --relative more efficient. via 8449539a More NEWS updates. from 71c2b5d0 Fix exclusion of /. with --relative.
https://git.samba.org/?p=rsync.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 7a2dbf717794655a3fd82439fdb1e3d8b4730c74 Author: Wayne Davison <wa...@opencoder.net> Date: Wed Sep 14 08:20:41 2022 -0700 Make the implied-arg adding for --relative more efficient. commit 8449539a0f4501ffc7a1792e361925ee98b86783 Author: Wayne Davison <wa...@opencoder.net> Date: Wed Sep 14 07:53:23 2022 -0700 More NEWS updates. ----------------------------------------------------------------------- Summary of changes: NEWS.md | 25 ++++++++++++++----------- exclude.c | 45 +++++++++++++++++++++++++-------------------- 2 files changed, 39 insertions(+), 31 deletions(-) Changeset truncated at 500 lines: diff --git a/NEWS.md b/NEWS.md index 49dbc544..d40b7fa2 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,9 +4,9 @@ ### BUG FIXES: -- Fix a bug with validating remote filter rules. +- Fixed the validating of remote filter rules. -- When rsync gets and unpack error on an ACL, mention the filename. +- When rsync gets an unpack error on an ACL, mention the filename. ### ENHANCEMENTS: @@ -17,7 +17,10 @@ - Added support for SHA1, SHA256, and SHA512 digests in file checksums. While this tends to be overkill, it is available if someone really needs it. These overly-long checksums are at the lowest priority in the normal checksum - negotation list. + negotiation list. + +- Improved the xattr hash table to use a 64-bit key (which should ensure fewer + collisions). - If the `--version` option is repeated (e.g. `-VV`) then the information is output in a (still human-readable) JSON format (client side only). @@ -26,8 +29,8 @@ version output from any rsync. The script accepts either text on stdin **or** an arg that specifies an rsync executable to run with a doubled `--version` option. If the text we get isn't already in JSON format, it is - converted into equivalent JSON as rsync 3.2.7 would output it (though some - info may be missing from older versions). + converted. Newer rsync versions will provide more complete info than older + versions. ### PACKAGING RELATED: @@ -39,12 +42,12 @@ talking to an rsync prior to 3.0.0) or you can configure rsync to tell openssl to enable legacy algorithms (see below). -- A simple openssl config file is supplied that can be optionally installed for - rsync to use. If you install packaging/openssl-rsync.cnf to a public spot - (such as ` /etc/ssl/openssl-rsync.cnf` or similar) and then configure rsync - using `--with-openssl-conf=/path/name.cnf`, this will cause rsync to export - the configured path in the OPENSSL_CONF environment variable (when it is not - already set). This will enable openssl's MD4 code for rsync to use. +- A simple openssl config file is supplied that can be installed for rsync to + use. If you install packaging/openssl-rsync.cnf to a public spot (such as + `/etc/ssl/openssl-rsync.cnf`) and then run configure with the option + `--with-openssl-conf=/path/name.cnf`, this will cause rsync to export the + configured path in the OPENSSL_CONF environment variable (when the variable + is not already set). This will enable openssl's MD4 code for rsync to use. ------------------------------------------------------------------------------ diff --git a/exclude.c b/exclude.c index b21207ba..5c0b0a69 100644 --- a/exclude.c +++ b/exclude.c @@ -493,9 +493,10 @@ void add_implied_include(const char *arg, int skip_daemon_module) if (saw_live_open_brkt) maybe_add_literal_brackets_rule(rule, arg_len); if (relative_paths && slash_cnt) { - filter_rule const *ent; - slash_cnt = 1; - for (p = new_pat + 1; (p = strchr(p, '/')) != NULL; p++) { + int sub_slash_cnt = slash_cnt; + while ((p = strrchr(new_pat, '/')) != NULL && p != new_pat) { + filter_rule const *ent; + filter_rule *R_rule; int found = 0; *p = '\0'; for (ent = implied_filter_list.head; ent; ent = ent->next) { @@ -504,25 +505,29 @@ void add_implied_include(const char *arg, int skip_daemon_module) break; } } - if (!found) { - filter_rule *R_rule = new0(filter_rule); - R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY; - /* Check if our sub-path has wildcards or escaped backslashes */ - if (saw_wild && strpbrk(new_pat, "*[?\\")) - R_rule->rflags |= FILTRULE_WILD; - R_rule->pattern = strdup(new_pat); - R_rule->u.slash_cnt = slash_cnt; - R_rule->next = implied_filter_list.head; - implied_filter_list.head = R_rule; - if (DEBUG_GTE(FILTER, 3)) { - rprintf(FINFO, "[%s] add_implied_include(%s/)\n", - who_am_i(), R_rule->pattern); - } - if (saw_live_open_brkt) - maybe_add_literal_brackets_rule(R_rule, -1); + if (found) { + *p = '/'; + break; /* We added all parent dirs already */ + } + R_rule = new0(filter_rule); + R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY; + /* Check if our sub-path has wildcards or escaped backslashes */ + if (saw_wild && strpbrk(new_pat, "*[?\\")) + R_rule->rflags |= FILTRULE_WILD; + R_rule->pattern = strdup(new_pat); + R_rule->u.slash_cnt = --sub_slash_cnt; + R_rule->next = implied_filter_list.head; + implied_filter_list.head = R_rule; + if (DEBUG_GTE(FILTER, 3)) { + rprintf(FINFO, "[%s] add_implied_include(%s/)\n", + who_am_i(), R_rule->pattern); } + if (saw_live_open_brkt) + maybe_add_literal_brackets_rule(R_rule, -1); + } + for (p = new_pat; sub_slash_cnt < slash_cnt; sub_slash_cnt++) { + p += strlen(p); *p = '/'; - slash_cnt++; } } } -- The rsync repository. _______________________________________________ rsync-cvs mailing list rsync-cvs@lists.samba.org https://lists.samba.org/mailman/listinfo/rsync-cvs