From: Wayne Davison Date: Wed, 16 Apr 2008 16:32:22 +0000 (-0700) Subject: Fixed a problem with how the daemon filters deal with X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/311676ed21eb61ec49187b9dd064aef18997d470?hp=4616867b0d16cd6f391c0ba0f79ad3cb18c3dcda Fixed a problem with how the daemon filters deal with a destination directory with a trailing slash. --- diff --git a/main.c b/main.c index f08d359f..5fba5e68 100644 --- a/main.c +++ b/main.c @@ -507,12 +507,20 @@ static char *get_local_name(struct file_list *flist, char *dest_path) if (!dest_path || list_only) return NULL; - if (daemon_filter_list.head - && (check_filter(&daemon_filter_list, FLOG, dest_path, 0 != 0) < 0 - || check_filter(&daemon_filter_list, FLOG, dest_path, 1 != 0) < 0)) { - rprintf(FERROR, "skipping daemon-excluded destination \"%s\"\n", - dest_path); - exit_cleanup(RERR_FILESELECT); + if (daemon_filter_list.head) { + char *slash = strrchr(dest_path, '/'); + if (slash && slash[1] == '\0') + *slash = '\0'; + else + slash = NULL; + if (check_filter(&daemon_filter_list, FLOG, dest_path, 0) < 0 + || check_filter(&daemon_filter_list, FLOG, dest_path, 1) < 0) { + rprintf(FERROR, "skipping daemon-excluded destination \"%s\"\n", + dest_path); + exit_cleanup(RERR_FILESELECT); + } + if (slash) + *slash = '/'; } /* See what currently exists at the destination. */