[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Mon Aug 1 14:54:31 UTC 2022


The branch, master has been updated
       via  3d7015af A few more minor changes.
      from  7e5424b8 More improvements to file-list checking

https://git.samba.org/?p=rsync.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 3d7015afa223494e3318495c2f5de9cb49229da9
Author: Wayne Davison <wayne at opencoder.net>
Date:   Mon Aug 1 07:29:44 2022 -0700

    A few more minor changes.

-----------------------------------------------------------------------

Summary of changes:
 exclude.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/exclude.c b/exclude.c
index 2d740a83..0100efc7 100644
--- a/exclude.c
+++ b/exclude.c
@@ -313,13 +313,10 @@ void add_implied_include(const char *arg)
 	if (am_server || old_style_args || list_only || filesfrom_host != NULL)
 		return;
 	if (relative_paths) {
-		cp = strstr(arg, "/./");
-		if (cp)
-			arg = cp+3;
-	} else {
-		if ((cp = strrchr(arg, '/')) != NULL)
-			arg = cp + 1;
-	}
+		if ((cp = strstr(arg, "/./")) != NULL)
+			arg = cp + 3;
+	} else if ((cp = strrchr(arg, '/')) != NULL)
+		arg = cp + 1;
 	arg_len = strlen(arg);
 	if (arg_len) {
 		if (strpbrk(arg, "*[?")) {
@@ -359,13 +356,17 @@ void add_implied_include(const char *arg)
 					int found = 0;
 					*p = '\0';
 					for (ent = implied_filter_list.head; ent; ent = ent->next) {
-						if (ent != rule && strcmp(ent->pattern, rule->pattern) == 0)
+						if (ent != rule && strcmp(ent->pattern, rule->pattern) == 0) {
 							found = 1;
+							break;
+						}
 					}
 					if (!found) {
 						filter_rule *R_rule = new0(filter_rule);
-						R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY
-							       | (saw_wild ? FILTRULE_WILD : 0);
+						R_rule->rflags = FILTRULE_INCLUDE | FILTRULE_DIRECTORY;
+						/* Check if our sub-path has wildcards or escaped backslashes */
+						if (saw_wild && strpbrk(rule->pattern, "*[?\\"))
+							R_rule->rflags |= FILTRULE_WILD;
 						R_rule->pattern = strdup(rule->pattern);
 						R_rule->u.slash_cnt = slash_cnt;
 						R_rule->next = implied_filter_list.head;


-- 
The rsync repository.



More information about the rsync-cvs mailing list